[k8s] Azure Kubernetes Service와 서비스 주체 (Service Principal)

k8s
작성자
Roronoa
작성일
2020-09-29 20:15
조회
3745
Azure RBAC과 함께 Azure Active Directory(AAD) 응용프로그램과 서비스 주체(Service Principal)를 를 만들어보자.

서비스 주체(Service Principal) 란?


응용프로그램 또는 인프라 또는 Azure 인프라 제품들을 사용하기 위한 앱에 대한 ID를 만드는 과정이 서비스 주체(Service Principal) 입니다.

이는 응용프로그램 APP에서 Azure 인프라를 수정 하기 위해서 등록하고 사용 기간 설정등 자동화를 위해서 필요한 제품이며 이 권한은 AAD에서도 매우 중요한 기능입니다. 그래서 권한이 없는 사용자들은 함부로 이 서비스 주체를 만들수 없도록 세팅하는것은 매우 중요합니다.
azure그림001

서비스 주체와 앱 등록은 Azure 구독과 AAD 권한 두개를 전부 가지고 있어야 합니다

그이유는 위에 Azure Active Directory(AAD)와 Azure 구독은 다른 범위의 권한이므로 두개가 동시에 권한을 가지는 것은 일반계정에서 Global Admin이면서 구독의 Owner 이기 때문이며 그이외에 권한은 구독읜 서비스 주체를 만드는 권한이고 앱등록은 Azure AD의 권한이 있어야 합니다.

앱 등록, 앱 개체 및 서비스 주체


1.포털에서는 서비스주체 만드는 방법은 없습니다. 

2.응용 프로그램을 Azure Active Directory(AAD)에 등록하면 서비스 주체가 자동으로 연동되어 만들어집니다

3.권한은 Global Admin을 가져야 합니다.

4.Azure AD로 포털에서 접속 후 User -> User 세팅으로 가면 하단의 그림처럼

유저들이  App을 등록할수 있게 하는 옵션이 있습니다. NO로 하면 일반 유저는 App 등록이 불가 하며

Azure Active Directory(AAD) 포털이 보이지도 않도록 세팅 가능합니다.
azure그림002

5.포털에서 Azure 구독을 선택하고 IAM으로 들어갑니다
azure그림003

6.상단의 그림처럼 Contributor는 Azure Kubernetes Service (AKS) 를 생성할 수 없습니다

그러므로 Owner 소유자만 생성할 수 있습니다. 보통 Azure 리소스는 Contributor는 대부분 생성할 수 있지만 Azure

Kubernetes Service(AKS)는 Owner 만 생성할 수 있습니다.
azure그림004

7. 그림 004처럼 Contributor가 Azure Kubernetes Service (AKS) 를 생성하면 권한 부족 에러가 나게 됩니다.

8. 계정이 Azure Active Directory(AAD)에서 권한이 Global admin이고 구독이 Owner인 상태에서 우선 App등록을 하기 위해서 Azure Active Directory(AAD)
azure그림005

9. 우선 Azure Active Directory(AAD)로 이동해서 그림 5의 왼쪽의 빨간빡스의 App Registration을 클릭하고 New registration을 선택합니다.
azure그림006
10.앱 이름을 넣고 등록합니다
azure그림007'

11.그림007번 에 있는 Application (Client) ID가 Service Principal ID이며 이를 꼭 적어 놓습니다

그리고 파란박스에서 이 앱의 비밀번호를 만들 수 있으며 그것이 Service Principal의 password가 됩니다.
azure그림008'

12. 그림008에서 New Client Secret을 꼭 + 버튼을 누르고 ADD를 누르고 키를 만듭니다
azure그림009'

13.그림 009의 빨간박스 부분을 꼭 저장 해놓아야 하며 이 부분이 Service Principal의 비밀번호가 됩니다.
azure그림010

14. 그림010 에서 빨간박스 부분이 Service Principal Client ID 부분이 앱등록의 Application (Client) ID 부분이며 이름이 다르지만 이부분을 잘 입력해야 합니다. 파란색 박스 부분은 Service Principal Client secret이  그림009의 Secret 이 됩니다.