Azure 역할 할당 만들기
이 페이지에서는 Azure용 GKE가 Azure API에 액세스할 수 있도록 권한을 부여하는 방법을 보여줍니다. Azure용 GKE 클러스터를 새로 설정하거나 기존 클러스터의 권한을 업데이트할 때 이 단계를 실행해야 합니다. 이러한 권한은 Azure용 GKE가 가상 머신, 네트워킹 구성요소, 스토리지와 같은 Azure 리소스를 사용자 대신 관리하는 데 필요합니다.
서비스 주 구성원 및 구독 ID 가져오기
Azure용 GKE에 권한을 부여하려면 Azure 서비스 주 구성원 및 구독 ID를 가져와야 합니다. Azure 서비스 주 구성원 및 구독 ID는 Azure용 GKE용으로 만든 Azure AD 애플리케이션과 연결됩니다. 자세한 내용은 Azure Active Directory 애플리케이션 만들기를 참조하세요.
서비스 주 구성원은 Azure에 인증하고 Azure 리소스에 액세스하는 데 사용되는 Azure Active Directory(AD)의 ID입니다. Azure 구독은 Azure 제품 및 서비스에 대한 승인된 액세스 권한을 제공하는 논리적 컨테이너입니다. 구독 ID는 Azure 구독과 연결된 고유 식별자입니다.
서비스 주 구성원 및 구독 ID를 빠르게 참조할 수 있도록 셸 변수에 저장할 수 있습니다. 다음 명령어를 실행하여 이러한 셸 변수를 만듭니다.
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)
APPLICATION_NAME
을 Azure AD 애플리케이션 이름으로 바꿉니다.
커스텀 역할 3개 만들기
Azure용 GKE에 Azure 리소스를 관리할 권한을 부여하려면 세 가지 커스텀 역할을 만들고 서비스 주 구성원에게 할당해야 합니다. 다음 안내에서는 최소 권한만 추가됩니다. 필요한 경우 더 많은 권한을 추가할 수 있습니다.
다음 유형의 액세스에 대한 커스텀 역할을 만들어야 합니다.
- 구독 수준 액세스: 전체 Azure 구독에 적용되는 권한으로, 해당 구독 내의 모든 Azure 리소스를 관리할 수 있습니다.
- 클러스터 리소스 그룹 수준 액세스: Azure용 GKE 클러스터가 포함된 특정 리소스 그룹 내에서 Azure 리소스를 관리하는 것과 관련된 권한입니다.
- 가상 네트워크 리소스 그룹 수준 액세스: Azure 가상 네트워크 리소스가 포함된 리소스 그룹 내에서 Azure 리소스를 관리하는 것과 관련된 권한입니다.
구독 수준 액세스를 위한 역할 만들기
GKEOnAzureAPISubscriptionScopedRole.json
파일을 만듭니다.편집기에서
GKEOnAzureAPISubscriptionScopedRole.json
을 열고 다음 권한을 추가합니다.{ "Name": "GKE on-Azure API Subscription Scoped Role", "IsCustom": true, "Description": "Allow GKE on-Azure service manage resources in subscription scope.", "Actions": [ "Microsoft.Authorization/roleAssignments/read", "Microsoft.Authorization/roleAssignments/write", "Microsoft.Authorization/roleAssignments/delete", "Microsoft.Authorization/roleDefinitions/read" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": ["/subscriptions/${SUBSCRIPTION_ID}"] }
새 커스텀 역할을 만듭니다.
az role definition create --role-definition "GKEOnAzureAPISubscriptionScopedRole.json"
다음 명령어를 사용하여 서비스 주 구성원에 역할을 할당합니다.
az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "GKE on-Azure API Subscription Scoped Role" --scope /subscriptions/${SUBSCRIPTION_ID}
클러스터 리소스 그룹 수준 액세스를 위한 역할 만들기
GKEOnAzureClusterResourceGroupScopedRole.json
파일을 만듭니다.편집기에서
GKEOnAzureClusterResourceGroupScopedRole.json
을 열고 다음 권한을 추가합니다.{ "Name": "GKE on-Azure API Cluster Resource Group Scoped Role", "IsCustom": true, "Description": "Allow GKE on-Azure service manage resources in cluster resource group scope.", "Actions": [ "Microsoft.Resources/subscriptions/resourcegroups/read", "Microsoft.Authorization/roleDefinitions/write", "Microsoft.Authorization/roleDefinitions/delete", "Microsoft.ManagedIdentity/userAssignedIdentities/write", "Microsoft.ManagedIdentity/userAssignedIdentities/read", "Microsoft.ManagedIdentity/userAssignedIdentities/delete", "Microsoft.Network/applicationSecurityGroups/write", "Microsoft.Network/applicationSecurityGroups/read", "Microsoft.Network/applicationSecurityGroups/delete", "Microsoft.Network/applicationSecurityGroups/joinIpConfiguration/action", "Microsoft.Authorization/roleAssignments/write", "Microsoft.Authorization/roleAssignments/read", "Microsoft.Authorization/roleAssignments/delete", "Microsoft.Network/loadBalancers/write", "Microsoft.Network/loadBalancers/read", "Microsoft.Network/loadBalancers/delete", "Microsoft.Network/loadBalancers/backendAddressPools/join/action", "Microsoft.Network/networkSecurityGroups/write", "Microsoft.Network/networkSecurityGroups/read", "Microsoft.Network/networkSecurityGroups/delete", "Microsoft.Network/networkSecurityGroups/join/action", "Microsoft.KeyVault/vaults/write", "Microsoft.KeyVault/vaults/read", "Microsoft.KeyVault/vaults/delete", "Microsoft.Compute/disks/read", "Microsoft.Compute/disks/write", "Microsoft.Compute/disks/delete", "Microsoft.Network/networkInterfaces/read", "Microsoft.Network/networkInterfaces/write", "Microsoft.Network/networkInterfaces/delete", "Microsoft.Network/networkInterfaces/join/action", "Microsoft.Compute/virtualMachines/read", "Microsoft.Compute/virtualMachines/write", "Microsoft.Compute/virtualMachines/delete", "Microsoft.Compute/virtualMachineScaleSets/write", "Microsoft.Compute/virtualMachineScaleSets/read", "Microsoft.Compute/virtualMachineScaleSets/delete", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.Compute/virtualMachines/retrieveBootDiagnosticsData/action", "Microsoft.Insights/Metrics/Read" ], "NotActions": [], "DataActions": [ "Microsoft.KeyVault/vaults/keys/create/action", "Microsoft.KeyVault/vaults/keys/delete", "Microsoft.KeyVault/vaults/keys/read", "Microsoft.KeyVault/vaults/keys/encrypt/action" ], "NotDataActions": [], "AssignableScopes": ["/subscriptions/${SUBSCRIPTION_ID}"] } ```
새 커스텀 역할을 만듭니다.
az role definition create --role-definition "GKEOnAzureClusterResourceGroupScopedRole.json"
다음 명령어를 사용하여 서비스 주 구성원에 역할을 할당합니다.
az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "GKE on-Azure API Cluster Resource Group Scoped Role" --scope /subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${CLUSTER_RESOURCE_GROUP_ID}
가상 네트워크 리소스 그룹 수준 액세스를 위한 역할 만들기
GKEOnAzureAPIVNetResourceGroupScopedRole.json
파일을 만듭니다.편집기에서
GKEOnAzureAPIVNetResourceGroupScopedRole.json
을 열고 다음 권한을 추가합니다.{ "Name": "GKE on-Azure API VNet Resource Group Scoped Role", "IsCustom": true, "Description": "Allow GKE on-Azure service manage resources in virtual network resource group scope.", "Actions": [ "Microsoft.Network/virtualNetworks/read", "Microsoft.Network/virtualNetworks/subnets/read", "Microsoft.Network/virtualNetworks/subnets/join/action", "Microsoft.Authorization/roleDefinitions/write", "Microsoft.Authorization/roleDefinitions/delete" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": ["/subscriptions/${SUBSCRIPTION_ID}"] }
새 커스텀 역할을 만듭니다.
az role definition create --role-definition "GKEOnAzureAPIVNetResourceGroupScopedRole.json"
다음 명령어를 사용하여 서비스 주 구성원에 역할을 할당합니다.
az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "GKE on-Azure API Subscription Scoped Role" --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/VNET_RESOURCE_GROUP_ID"