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 リソースに必要なロールをプロビジョニングする権限が必要です。

必要なサブスクリプション スコープの権限を持つカスタムロールを作成するには、次の操作を行います。

  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 は、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"
    
  2. 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 上のリソース グループの名前

次のステップ