Share via


Microsoft Entra 테넌트 전반에 걸쳐 프로그래밍 방식으로 MCA 구독 만들기

이 문서는 Microsoft Entra 테넌트 전반에 걸쳐 MCA(Microsoft 고객 계약) 구독을 프로그래밍 방식으로 만드는 데 도움이 됩니다. 경우에 따라 Microsoft Entra 테넌트 전반에 걸쳐 MCA 구독을 만들어야 하지만 이를 단일 청구 계정에 연결해야 할 수도 있습니다. 해당 상황의 예로는 호스트된 고객 서비스를 내부 IT 서비스 또는 PCI(결제 카드 산업)와 같은 엄격한 규정 준수 요구 사항이 있는 내부 환경에서 분리하려는 SaaS 공급자가 있습니다.

여러 테넌트에서 MCA 구독을 만드는 프로세스는 사실상 2단계 프로세스입니다. 원본 및 대상 Microsoft Entra 테넌트에서 조치를 취해야 합니다. 이 문서에서는 다음 용어를 사용합니다.

  • 원본 Microsoft Entra ID(source.onmicrosoft.com). MCA 청구 계정이 있는 원본 테넌트를 나타냅니다.
  • 대상 클라우드 Microsoft Entra ID(destination.onmicrosoft.com). 새 MCA 구독이 만들어지는 대상 테넌트를 나타냅니다.

프로그래밍 방식으로 지원 계획을 만들 수는 없습니다. Azure Portal에서 새 지원 계획을 구매하거나 업그레이드할 수 있습니다. 도움말 + 지원으로 이동한 다음 페이지 상단에서 올바른 지원 계획 선택을 선택합니다.

필수 조건

다음 테넌트가 이미 생성되어 있어야 합니다.

  • 활성 Microsoft 고객 계약 청구 계정이 있는 원본 Microsoft Entra 테넌트입니다. 활성 MCA가 없는 경우 MCA를 만들 수 있습니다. 자세한 내용은 Azure - 가입을 참조하세요.
  • MCA가 속한 테넌트와 별도의 대상 Microsoft Entra 테넌트입니다. 새로운 Microsoft Entra 테넌트를 만들려면 Microsoft Entra 테넌트 설정을 참조하세요.

애플리케이션 설정

다음 섹션의 정보를 사용하여 원본 및 대상 테넌트에서 필요한 애플리케이션을 설정하고 구성합니다.

원본 테넌트에서 애플리케이션 등록

프로그래밍 방식으로 MCA 구독을 만들려면 Microsoft Entra 애플리케이션을 등록하고 적절한 Azure RBAC 권한을 부여해야 합니다. 이 단계에서는 Microsoft Entra 애플리케이션을 등록할 수 있는 권한이 있는 계정으로 원본 테넌트(source.onmicrosoft.com)에 로그인했는지 확인합니다.

빠른 시작: Microsoft ID 플랫폼을 사용하여 애플리케이션 등록의 단계를 수행합니다.

이 프로세스를 위해 애플리케이션 등록자격 증명 추가 섹션을 따르면 됩니다.

다음 정보를 저장하여 환경을 테스트하고 구성합니다.

  • 디렉터리(테넌트) ID
  • 애플리케이션(클라이언트) ID
  • 개체 ID입니다.
  • 생성된 앱 비밀 값. 값은 생성 시에만 표시됩니다.

원본 테넌트에서 애플리케이션에 대한 청구 역할 할당 만들기

Azure의 Microsoft 고객 계약 관리 역할 이해의 정보를 검토하여 애플리케이션에 대한 적절한 범위 및 청구 역할을 결정합니다.

범위 및 역할을 결정한 후 Azure Portal에서 청구 역할 관리의 정보를 사용하여 애플리케이션에 대한 역할 할당을 만듭니다. 이전 섹션에서 애플리케이션을 등록할 때 사용한 이름을 사용하여 애플리케이션을 검색합니다.

대상 테넌트에서 애플리케이션 등록

대상 테넌트(destination.onmicrosoft.com)에서 MCA 구독을 수락하려면 Microsoft Entra 애플리케이션을 등록하고 청구 관리자 Microsoft Entra 역할에 추가해야 합니다. 이 단계에서는 Microsoft Entra 애플리케이션을 등록할 수 있는 권한이 있는 계정으로 대상 테넌트(destination.onmicrosoft.com)에 로그인했는지 확인합니다. 청구 관리자 역할 권한도 있어야 합니다.

위에서 사용한 것과 동일한 단계에 따라 원본 테넌트에서 애플리케이션을 등록합니다. 다음 정보를 저장하여 환경을 테스트하고 구성합니다.

  • 디렉터리(테넌트) ID
  • 애플리케이션(클라이언트) ID
  • 개체 ID입니다.
  • 생성된 앱 비밀 값. 값은 생성 시에만 표시됩니다.

청구 관리자 Microsoft Entra 역할에 대상 애플리케이션 추가

Microsoft Entra ID가 있는 사용자에게 관리자 및 비관리자 역할 할당의 정보를 사용하여 이전 섹션에서 만든 대상 애플리케이션을 대상 테넌트의 청구 관리자 Microsoft Entra 역할에 추가합니다.

프로그래밍 방식으로 구독 만들기

애플리케이션 및 권한이 이미 설정된 상태에서 다음 정보를 사용하여 프로그래밍 방식으로 구독을 만듭니다.

대상 애플리케이션 서비스 주체의 ID 가져오기

원본 테넌트에서 MCA 구독을 만들 때 대상 테넌트에서 애플리케이션의 서비스 주체 또는 SPN을 소유자로 지정해야 합니다. 다음 방법 중 하나를 사용하여 ID를 가져옵니다. 두 방법 모두에서 빈 GUID에 사용할 값은 이전에 만든 대상 테넌트 애플리케이션의 애플리케이션(클라이언트) ID입니다.

Azure CLI

Azure CLI에 로그인하고 az ad sp show 명령을 사용합니다.

az ad sp show --id 00000000-0000-0000-0000-000000000000 --query 'id'

Azure PowerShell

Azure PowerShell에 로그인하고 Get-AzADServicePrincipal cmdlet을 사용합니다.

Get-AzADServicePrincipal -ApplicationId 00000000-0000-0000-0000-000000000000 | Select-Object -Property Id

명령에서 반환된 Id 값을 저장합니다.

구독 만들기

다음 정보를 사용하여 원본 테넌트에서 구독을 만듭니다.

원본 애플리케이션 액세스 토큰 가져오기

{{placeholders}}를 이전에 원본 테넌트 애플리케이션을 만들 때 저장한 실제 테넌트 ID, 애플리케이션(클라이언트) ID 및 앱 비밀 값으로 바꿉니다.

요청을 호출하고 다음 단계에서 사용할 응답의 access_token 값을 저장합니다.

POST https://login.microsoftonline.com/{{tenant_id}}/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id={{client_id}}&client_secret={{app_secret}}&resource=https%3A%2F%2Fmanagement.azure.com%2F

청구 계정, 프로필 및 청구서 섹션 ID 가져오기

액세스 권한이 있는 청구 계정 찾기구독을 만들 청구 프로필 및 청구서 섹션 찾기 섹션의 정보를 사용하여 청구 계정, 프로필 및 청구서 섹션 ID를 가져옵니다.

참고 항목

이전에 가져온 액세스 토큰과 함께 REST 메서드를 사용하여 애플리케이션 설정 섹션에서 애플리케이션 청구 역할 할당이 성공적으로 만들어졌는지 확인하는 것이 좋습니다.

구독 별칭 만들기

청구 계정, 프로필 및 청구서 섹션 ID를 사용하면 구독을 만드는 데 필요한 모든 정보가 있는 것입니다.

  • {{guid}}: 유효한 GUID일 수 있습니다.
  • {{access_token}}: 이전에 가져온 원본 테넌트 애플리케이션의 액세스 토큰입니다.
  • {{billing_account}}: 이전에 가져온 청구 계정의 ID입니다.
  • {{billing_profile}}: 이전에 가져온 청구 프로필의 ID입니다.
  • {{invoice_section}}: 이전에 가져온 청구서 섹션의 ID입니다.
  • {{destination_tenant_id}}: 이전에 대상 테넌트 애플리케이션을 만들 때 기록해 둔 대상 테넌트의 ID입니다.
  • {{destination_service_principal_id}}: 이전에 대상 애플리케이션 서비스 주체의 ID 가져오기 섹션에서 가져온 대상 테넌트 서비스 주체의 ID입니다.

요청을 보내고 응답에서 헤더 값을 Location 기록해 둡니다.

PUT https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01
Authorization: Bearer {{access_token}}
Content-Type: application/json

{
  "properties": {
    "displayName": "{{subscription_name}}",
    "workload": "Production",
    "billingScope": "/billingAccounts/{{billing_account}}/billingProfiles/{{billing_profile}}/invoiceSections/{{invoice_section}}",
    "subscriptionId": null,
    "additionalProperties": {
      "managementGroupId": null,
      "subscriptionTenantId": "{{destination_tenant_id}}",
      "subscriptionOwnerId": "{{destination_service_principal_id}}"
    }
  }
}

구독 소유권 수락

프로세스를 완료하는 마지막 단계는 구독 소유권을 수락하는 것입니다.

대상 애플리케이션 액세스 토큰 가져오기

{{placeholders}}를 이전에 대상 테넌트 애플리케이션을 만들 때 저장한 실제 테넌트 ID, 애플리케이션(클라이언트) ID 및 앱 비밀 값으로 바꿉니다.

요청을 호출하고 다음 단계에 대한 응답의 access_token 값을 저장합니다.

POST https://login.microsoftonline.com/{{tenant_id}}/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id={{client_id}}&client_secret={{app_secret}}&resource=https%3A%2F%2Fmanagement.azure.com%2F

소유권 수락

다음 정보를 사용하여 대상 테넌트에서 구독의 소유권을 수락합니다.

  • {{subscription_id}}: 구독 별칭 만들기 섹션에서 만든 구독의 ID입니다. 기록해 둔 위치 헤더에 포함되어 있습니다.
  • {{access_token}}: 이전 단계에서 만든 액세스 토큰입니다.
  • {{subscription_display_name}}: Azure 환경에서 구독의 표시 이름입니다.
POST https://management.azure.com/providers/Microsoft.Subscription/subscriptions/{{subscription_id}}/acceptOwnership?api-version=2021-10-01
Authorization: Bearer {{access_token}}
Content-Type: application/json

{
  "properties": {
    "displayName": "{{subscription_display_name}}",
    "managementGroupId": null
  }
}

다음 단계