Azure 역할 할당 만들기

이 섹션에서는 Azure용 GKE에 Azure API 액세스 권한을 부여합니다.

서비스 주 구성원 및 구독 ID를 셸 변수에 저장하려면 다음 명령어를 실행합니다. APPLICATION_NAME을 애플리케이션의 이름으로 바꿉니다.

APPLICATION_ID=$(az ad app list --all \
    --query "[?displayName=='APPLICATION_NAME'].appId" \
    --output tsv)
SERVICE_PRINCIPAL_ID=$(az ad sp list --all  --output tsv \
      --query "[?appId=='$APPLICATION_ID'].id")
SUBSCRIPTION_ID=$(az account show --query "id" --output tsv)

서비스 주 구성원에 권한을 할당합니다. Azure용 GKE에는 구독 수준에서 관리형 Azure 리소스에 필요한 역할을 프로비저닝할 수 있는 권한이 필요합니다.

구독 범위가 지정된 필수 권한이 있는 커스텀 역할을 만들려면 다음 안내를 따르세요.

  1. RoleAssignmentCreator.json이라는 새 파일을 만듭니다.

  2. 편집기에서 RoleAssignmentCreator.json을 열고 다음 권한을 추가합니다.

    {
        "Name": "Role Assignment Creator",
        "IsCustom": true,
        "Description": "Can create Azure role assignments.",
        "Actions": [
            "Microsoft.Authorization/roleAssignments/read",
            "Microsoft.Authorization/roleAssignments/write",
            "Microsoft.Authorization/roleAssignments/delete",
            "Microsoft.Authorization/roleDefinitions/read"
        ],
        "NotActions": [],
        "DataActions": [],
        "NotDataActions": [],
        "AssignableScopes": ["/subscriptions/${SUBSCRIPTION_ID}"]
    }
    
  3. 다음 명령어를 사용하여 새 커스텀 역할을 만듭니다.

    az role definition create --role-definition "~/CustomRoles/RoleAssignmentCreator.json"
    
  4. 다음 명령어를 사용하여 서비스 주 구성원에 역할을 할당합니다.

    az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "Role Assignment Creator" --scope /subscriptions/${SUBSCRIPTION_ID}
    

권한을 할당할 때 구독 내의 모든 리소스에 적용되는 Azure 구독 수준 또는 특정 리소스 그룹으로 권한을 제한하는 리소스 그룹 수준에서 범위를 지정할 수 있습니다.

구독

참여자, 사용자 액세스 관리자, Key Vault 관리자 역할을 구독에 할당합니다.

az role assignment create \
    --role "Contributor" \
    --assignee "${SERVICE_PRINCIPAL_ID}" \
    --scope "/subscriptions/${SUBSCRIPTION_ID}"

az role assignment create \
    --role "User Access Administrator" \
    --assignee "${SERVICE_PRINCIPAL_ID}" \
    --scope "/subscriptions/${SUBSCRIPTION_ID}"

az role assignment create \
    --role "Key Vault Administrator" \
    --assignee "${SERVICE_PRINCIPAL_ID}" \
    --scope "/subscriptions/${SUBSCRIPTION_ID}"

리소스 그룹

  1. 클러스터 리소스 그룹으로 범위가 지정된 역할 할당을 만듭니다. CLUSTER_RESOURCE_GROUP_NAME을 Azure용 GKE의 리소스 그룹 이름으로 바꿉니다.

    az role assignment create \
      --role "Contributor" \
      --assignee "${SERVICE_PRINCIPAL_ID}" \
      --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/CLUSTER_RESOURCE_GROUP_NAME"
    
    az role assignment create \
      --role "User Access Administrator" \
      --assignee "${SERVICE_PRINCIPAL_ID}" \
      --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/CLUSTER_RESOURCE_GROUP_NAME"
    
    az role assignment create \
      --role "Key Vault Administrator" \
      --assignee "${SERVICE_PRINCIPAL_ID}" \
      --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/CLUSTER_RESOURCE_GROUP_NAME"
    
  2. Azure 가상 네트워크가 다른 리소스 그룹에 있으면 범위가 가상 네트워크 리소스 그룹으로 지정된 역할 할당을 만듭니다.

    az role assignment create \
      --role "Virtual Machine Contributor" \
      --assignee "${SERVICE_PRINCIPAL_ID}" \
      --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/VNET_RESOURCE_GROUP_NAME"
    
    az role assignment create \
      --role "User Access Administrator" \
      --assignee "${SERVICE_PRINCIPAL_ID}" \
      --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/VNET_RESOURCE_GROUP_NAME"
    

    다음을 바꿉니다.

    • VNET_RESOURCE_GROUP_NAME: Azure용 GKE VNet의 리소스 그룹 이름입니다.

다음 단계