Azure ロールの割り当てを作成する
このセクションでは、GKE on Azure に 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)
サービス プリンシパルに権限を割り当てます。GKE on Azure では、サブスクリプション レベルでマネージド Azure リソースに必要なロールをプロビジョニングする権限が必要です。
必要なサブスクリプション スコープの権限を持つカスタムロールを作成するには、次の操作を行います。
RoleAssignmentCreator.json
という名前の新しいファイルを作成します。エディタで
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}"] }
次のコマンドを使用して、新しいカスタムロールを作成します。
az role definition create --role-definition "~/CustomRoles/RoleAssignmentCreator.json"
次のコマンドを使用して、サービス プリンシパルにロールを割り当てます。
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}"
リソース グループ
クラスタのリソース グループをスコープとするロールの割り当てを作成します。
CLUSTER_RESOURCE_GROUP_NAME
は、GKE on Azure のリソース グループの名前に置き換えます。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"
Azure Virtual Network が別のリソース グループにある場合は、仮想ネットワーク リソース グループをスコープとするロールの割り当てを作成します。
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
: GKE on Azure VNet 上のリソース グループの名前