Sky Archive

Cloud/MS Azure

[Azure] Azure portal에서 Azure AD application and service principal 생성, 권한 부여 방법

Anchovy ʕ-᷅ᴥ-᷄ʔ 2023. 1. 31. 14:23

안녕하세요🐱‍🐉

오늘은 Azure portal에서 Azure AD application and service principal 생성, 권한 부여 방법에 대해 설명할게요!

외부 애플리케이션에서 api 호출 등을 위해 Azure portal에서 app registrations 후 권한 부여하는 일련의 과정입니다.

 

Azure documentation을 참고하여 작성했습니다!


역할 기반 액세스 컨트롤(RBAC, role-based access control)과 함께 사용할 수 있는 새로운 Azure Active Directory(Azure AD) 애플리케이션과 서비스 주체 작성 방법에 대해 설명합니다. 리소스에 액세스 하거나 수정해야 하는 애플리케이션, 호스팅 된 서비스 또는 자동화된 도구가 있는 경우 앱의 ID를 생성할 수 있습니다. 이 ID는 서비스 주체라고 불립니다. 리소스에 대한 액세스는 서비스 주체에게 할당된 역할에 의해 제한되므로 액세스 할 수 있는 리소스와 수준을 제어할 수 있습니다.

 

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

Azure 포털을 사용하여 서비스 주체를 직접 생성할 수 있는 방법은 없습니다. Azure 포털을 통해 애플리케이션을 등록하면 홈 디렉터리 또는 테넌트에 애플리케이션 개체와 서비스 주체가 자동으로 생성됩니다. 애플리케이션 등록, 애플리케이션 개체 및 서비스 주체 간의 관계에 대한 자세한 내용은 Azure Active Directory의 애플리케이션 및 서비스 주체 개체를 참조하십시오.

 

앱 등록에 필요한 권한

우선 응용 프로그램을 Azure AD 테넌트에 등록하고 응용 프로그램에 Azure 구독의 역할을 할당하려면 권한이 있어야 합니다.

 

1. Azure Active Directory를 선택합니다.
2. Overview -> My feed에서 역할을 찾습니다. 사용자 역할이 있는 경우 관리자가 아닌 사용자가 응용 프로그램을 등록할 수 있는지 확인해야 합니다.

3. 왼쪽 메뉴 목록에서 Users를 선택한 다음 User settings을 선택합니다.
4. App registrations 설정을 확인합니다. 이 값은 관리자만 설정할 수 있습니다. Yes로 설정하면 Azure AD 테넌트의 모든 사용자가 앱을 등록할 수 있습니다.

 

앱 등록 설정이 No로 설정된 경우 관리자 역할이 있는 사용자만 이러한 유형의 애플리케이션을 등록할 수 있습니다. 사용 가능한 관리자 역할 및 각 역할에 부여되는 Azure AD의 특정 권한에 대해 알아보려면 Azure AD 기본 제공 역할을 참조하세요. 계정에 사용자 역할이 할당되었지만 앱 등록 설정이 관리 사용자로 제한되는 경우 관리자에게 앱 등록의 모든 측면을 만들고 관리할 수 있는 관리자 역할 중 하나를 할당하거나 사용자가 앱을 등록할 수 있도록 해달라고 요청하세요.

 

Azure 구독 권한 확인

Azure 구독 시 귀하의 계정은 다음과 같아야 합니다. Microsoft.Authorization/*/WriteAD 앱에 역할을 할당하기 위한 액세스 권한입니다. 이 작업은 Owner 역할 또는 User Access Administrator 역할을 통해 부여됩니다. 계정에 기여자 역할이 할당된 경우 적절한 권한이 없습니다. 서비스 주체에게 역할을 할당하려고 하면 오류가 발생합니다.

구독 권한 확인:
1. Subscriptions을 선택합니다.

 

2. 서비스 주체 생성에 사용할 구독을 선택합니다.

찾고 있는 헤드라인 등록이 표시되지 않으면 글로벌 헤드라인 등록 필터를 선택합니다. 포털에 대해 원하는 구독이 선택되었는지 확인하십시오.

3. My permissions를 선택합니다. 그런 다음 여기를 클릭하여 이 헤드라인 등록에 대한 전체 액세스 세부 정보를 보십시오.

 

4. Role assignments을 선택하여 할당된 역할을 보고 AD 앱에 역할을 할당할 수 있는 적절한 권한이 있는지 확인합니다. 그렇지 않은 경우 구독 관리자에게 사용자 액세스 관리자 역할에 사용자를 추가하도록 요청하십시오. 다음 이미지에서는 사용자에게 Owner 역할이 할당되어 있습니다. 이는 사용자에게 적절한 권한이 있음을 의미합니다.

 

Azure AD에 애플리케이션 등록 및 서비스 주체 만들기

1. Azure Active Directory를 선택합니다.
2. App registrations을 선택합니다.
3. New registration을 선택합니다.
4. 애플리케이션 이름을 지정합니다(예: "example-app"). 애플리케이션을 사용할 수 있는 사람을 결정하는 지원되는 계정 유형을 선택합니다. 리디렉션 URI 아래에서 만들려는 애플리케이션 유형으로 웹을 선택합니다. 액세스 토큰이 전송되는 URI를 입력합니다. 네이티브 애플리케이션에 대한 자격 증명을 만들 수 없습니다. 자동화된 애플리케이션에는 해당 유형을 사용할 수 없습니다. 값을 설정한 후 등록을 선택합니다.

※ 문제가 발생하면 필요한 권한을 확인하여 계정이 ID를 생성할 수 있는지 확인

 

애플리케이션에 역할 할당

구독의 리소스에 액세스 하려면 애플리케이션에 역할을 할당해야 합니다. 애플리케이션에 적합한 권한을 제공하는 역할을 결정합니다. 사용 가능한 역할에 대해 알아보려면 Azure AD 기본 제공 역할을 참조하세요.

구독, 리소스 그룹 또는 리소스 수준에서 범위를 설정할 수 있습니다. 권한은 더 낮은 수준의 범위로 상속됩니다. 예를 들어 리소스 그룹에 대한 독자 역할에 애플리케이션을 추가하면 리소스 그룹과 여기에 포함된 모든 리소스를 읽을 수 있습니다.


1. Azure Portal에서 애플리케이션을 할당하려는 범위 수준을 선택합니다.

ex. 구독 범위에서 역할을 할당하려면 구독을 검색하여 선택하거나 홈 페이지에서 구독을 선택합니다.

 

2. 애플리케이션을 할당할 특정 구독을 선택합니다.

※ 찾고 있는 구독이 표시되지 않으면 글로벌 구독 필터를 선택하십시오. 포털에 대해 원하는 구독이 선택되었는지 확인합니다.

 

3. Access control(IAM)를 선택합니다.
4. Add > Add role assignment를 선택하여 역할 할당 추가 페이지를 엽니다.
5. Role 탭에서 목록의 애플리케이션에 할당할 역할을 선택합니다.

ex. 애플리케이션이 재부팅, 인스턴스 시작 및 중지와 같은 작업을 실행하도록 허용하려면 기여자 역할을 선택. 사용 가능한 역할

6. Next 또는 Members 탭으로 이동합니다. Assign access to -> User, group, or service principal를 선택한 다음 구성원 선택을 선택합니다. 기본적으로 Azure AD 애플리케이션은 사용 가능한 옵션에 표시되지 않습니다. 애플리케이션을 찾으려면 이름(예: "example-app")으로 검색하고 반환된 목록에서 선택합니다. 선택 버튼을 클릭합니다. 그런 다음 검토 + 할당 버튼을 클릭합니다.

서비스 주체가 설정되었습니다. 이를 사용하여 스크립트 또는 앱을 실행할 수 있습니다. 서비스 주체(권한, 사용자 동의 권한, 동의한 사용자 확인, 권한 검토, 로그인 정보 확인 등)를 관리하려면 엔터프라이즈 애플리케이션으로 이동합니다.


로그인을 위한 테넌트 및 앱 ID 값 가져오기

프로그래밍 방식으로 로그인할 때 인증 요청 및 애플리케이션 ID와 함께 테넌트 ID를 전달합니다. 또한 인증서 또는 인증 키가 필요합니다(다음 섹션에서 설명). 해당 값을 얻으려면 다음 단계를 사용하십시오.


1. Azure Active Directory를 선택합니다.
2. Azure AD의 App registrations에서 애플리케이션을 선택합니다.
3. 디렉터리(테넌트) ID를 복사하여 애플리케이션 코드에 저장합니다.

 

4. 애플리케이션 ID를 복사하여 애플리케이션 코드에 저장합니다.

 

인증

인증을 위해서는 인증서 업로드와 애플리케이션 암호, 두 가지 옵션이 있는데 저는 애플리케이션 암호는 사용했습니다.

 

옵션 1: 새 애플리케이션 암호 만들기

인증서를 사용하지 않기로 선택한 경우 새 애플리케이션 암호를 생성할 수 있습니다.


1. Azure Active Directory를 선택합니다.
2. Azure AD의 App registrations에서 애플리케이션을 선택합니다.
3. Certificates & secrets을 선택합니다.
4. Client secrets -> New client secret을 선택합니다.

5. 완료되면 Add를 선택합니다.
  클라이언트 암호를 저장하면 클라이언트 암호 값이 표시됩니다. 나중에 value는 숨김 처리되니 이 값을 반드시 기록해 둡니다.

 

옵션 2: 인증서 업로드

기존 인증서가 있는 경우 사용할 수 있습니다. 선택적으로 테스트 목적으로만 자체 서명된 인증서를 만들 수 있습니다. 자체 서명된 인증서를 만들려면 PowerShell을 열고 다음 매개 변수와 함께 New-SelfSignedCertificate를 실행하여 컴퓨터의 사용자 인증서 저장소에 인증서를 만듭니다.

- Azure PowerShell

$cert=New-SelfSignedCertificate -Subject "CN=DaemonConsoleCert" -CertStoreLocation "Cert:\CurrentUser\My"  -KeyExportPolicy Exportable -KeySpec Signature

Windows 제어판에서 액세스 할 수 있는 사용자 인증서 관리 MMC 스냅인을 사용하여 이 인증서를 파일로 내보냅니다.

1. 시작 메뉴에서 실행을 선택한 다음 certmgr.msc를 입력합니다.
  현재 사용자의 인증서 관리자 도구가 나타납니다.
2. 인증서를 보려면 인증서 - 왼쪽 창의 Certificates - Current User에서 Personal directory를 확장합니다.
3. 생성한 인증서를 마우스 오른쪽 버튼으로 클릭하고 All tasks->Export를 선택합니다.
4. 인증서 내보내기 마법사를 따릅니다. 개인 키를 내보내지 말고 .CER 파일로 내보내십시오.
인증서를 업로드하려면:
  4.1. Azure Active Directory를 선택합니다.
  4.2. Azure AD의 App registrations에서 애플리케이션을 선택합니다.
  4.3. Certificates & secrets을 선택합니다.
  4.4. Certificates > Upload certificate를 선택하고 인증서(기존 인증서 또는 내보낸 자체 서명된 인증서)를 선택합니다.

  4.5. Add를 선택합니다.
애플리케이션 등록 포털에서 애플리케이션에 인증서를 등록한 후 클라이언트 애플리케이션 코드에서 인증서를 사용하도록 설정합니다.

 

 

 

 

 

 

 

 

 

ref.

https://learn.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal#permissions-required-for-registering-an-app

https://learn.microsoft.com/ko-kr/azure/role-based-access-control/overview