次の方法で共有


AKS クラスターに Azure RBAC を使用する (プレビュー、廃止)

適用対象: Azure Local 22H2 上の AKS、Windows Server 上の AKS

警告

このプレビュー機能は廃止され、2024 年 7 月 15 日からサポートされていません。 運用環境でこの Azure RBAC プレビュー機能を使用することはお勧めしません。

この記事では、承認に Microsoft Entra ID と Azure ロールの割り当てを使用するように AKS クラスターに Azure RBAC を設定する方法について説明します。 クラスターを作成する手順については、 前提条件で説明します。

Azure Arc 対応 Kubernetes クラスターでの Azure RBAC の使用の概念の概要については、「azure Arc 対応 Kubernetes での Azure RBAC のを参照してください。

前提条件

Azure Arc を有効にして Kubernetes クラスターをデプロイする前に、次の前提条件を満たす必要があります。

Azure CLI 拡張機能をインストールする

Azure Arc 対応 Kubernetes Azure CLI 拡張機能のプレビュー バージョンは、Azure Local 22H2 上の AKS のこのプレビュー セットアップの唯一の互換性のあるバージョンです。 より高いバージョンを使用すると、Azure RBAC と AKS Arc の非互換性の問題が発生する可能性があります。拡張機能をインストールするには、次のコマンドを実行します。

az extension add -n connectedk8s --version 1.5.4

ネットワークを準備する

次のネットワーク、プロキシ、ファイアウォールの設定を構成します。

  • クラスターを Azure Arc に接続するためにアクセスできる必要があるエンドポイントを構成します。一覧については、「 Meet のネットワーク要件を参照してください。

  • プロキシまたはファイアウォールで Graph エンドポイント を許可します。

    プロキシ サーバーの構成の詳細については、「 Proxy サーバーの設定を参照してください。

サーバー アプリとクライアント アプリ

Azure RBAC では、さまざまな目的で Microsoft Entra クライアント アプリとサーバー アプリが使用されます。 クライアント アプリは、ユーザーが対話型ログインを使用して Microsoft Entra ID で認証した後、ユーザー トークンを取得するために使用されます。たとえば、デバイス コード フローを使用します。 クライアント アプリはパブリック クライアントであり、サービス プリンシパルのトークンを取得するための非対話型フローもサポートしています。

サーバー アプリは機密クライアントであり、サインインしているユーザーのセキュリティ グループの詳細を取得するために使用 超過要求ユーザー、およびプリンシパル (ユーザーまたは SPN) が AKS クラスターに対して持つ承認結果を返すアクセス要求を確認するために使用されます。

Microsoft Entra アプリケーションを登録すると、構成情報が Microsoft Entra ID に格納されます。 この構成により、Microsoft Entra アプリケーションによって表されるアプリケーションが、ユーザー (または SPN) の代わりに認証されます。 認証されると、アプリケーションは Microsoft Entra アプリ ID を使用して、ユーザーの代わりに API にアクセスできます。

サーバー アプリとクライアント アプリを作成する

次の手順を実行して、サーバー アプリとシークレット、およびクライアント アプリとシークレットを登録します。

Note

次の手順では、 Azure Arc 対応 Kubernetes クラスターに対して Azure RBAC を使用する AKS Arc での Azure RBAC セットアップの準備に必要な主要なタスクを示します。

これらの手順を実行するには、Microsoft Entra ID に組み込みの アプリケーション管理者ロール が必要です。 手順については、「 ユーザーに Microsoft Entra ロールを割り当てを参照してください。

  1. サーバー アプリケーションと共有シークレットを作成します
  2. サーバー アプリケーションのロールの割り当てを作成します
  3. クライアント アプリケーションを作成しますkubectlを使用してネットワーク内で接続する場合は、クライアント アプリケーションを参照します。

クラスターのユーザーにアクセス許可を付与する

クラスター上のサービス プリンシパル名 (SPN) のユーザーにアクセス許可を付与するロールを割り当てます。 az role assignment コマンドを使用します。

Kubernetes クラスターにロールを割り当てるには、サブスクリプション、リソース グループ、またはクラスターに対する Owner アクセス許可が必要です。

次の例では、 az ロールの割り当て を使用して、クラスターを含むリソース グループに Azure Arc Kubernetes Cluster Admin ロールを割り当てます。 クラスターを作成する前に、リソース グループのスコープを設定できます。

az role assignment create --role "Azure Arc Kubernetes Cluster Admin" --assignee xyz@contoso.com --scope /subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Kubernetes/connectedClusters/<resource name, aka name of AKS cluster>

connectedk8s プロキシ メソッド (api-server と通信するためのオプションの 1 つ) を使用してクラスターにアクセスするには、サブスクリプション、リソース グループ、またはクラスターをスコープとする "Azure Arc 対応 Kubernetes クラスター ユーザー ロール" が必要です。

次のコマンドは、特定のユーザーではなくグループにロールを割り当てます (前の例を参照)。

az role assignment create --assignee 00000000-0000-0000-0000-000000000000 --role "Azure Arc Kubernetes Cluster Admin" --scope $id

担当者は、Microsoft Entra グループのオブジェクト ID です。

ロールの詳細については、このセクション 参照

クラスターまたはリソース グループのスコープ ID を取得するには、次のコマンドを実行し、 "id":propertyを使用します。

az connectedk8s show -g <name of resource group>  
az connectedk8s show -n <name of cluster> -g <name of resource group>

その他の例については、 az ロールの割り当てを参照してください。

Arc 対応 Kubernetes クラスターの事前構築済みの Azure RBAC ロールについては、「 ユーザーがクラスターにアクセスするためのロールの割り当てを作成するを参照してください。 使用可能なすべての組み込みロールの一覧については、「 Azure 組み込みロールを参照してください。

手順 1: SPN を作成し、アクセス許可を割り当てる

Azure サービス プリンシパルを使用して、Azure RBAC を有効にしてターゲット クラスターを作成するために必要なアクセス許可を持つ Automation アカウントを構成します。

ターゲット クラスターを作成するには、サブスクリプションに対する制限付き特権のみが必要です。 Kubernetes Cluster - Azure Arc Onboarding ロールを使用することをお勧めします。 Owner または Contributor ロールを使用することもできます。 詳細については、Azure の組み込みロールに関するページを参照してください。

az ad sp create-for-rbac Azure CLI コマンドを使用して SPN を作成し、必要なアクセス許可で構成します。

次の例では、サブスクリプションに Kubernetes Cluster - Azure Arc Onboarding ロールを割り当てます。 詳細については、 az ad sp コマンド リファレンスを参照してください。

az ad sp create-for-rbac --role "Kubernetes Cluster - Azure Arc Onboarding" --scopes /subscriptions/<OID of the subscription ID> 

重要

az ad spのコマンド出力には、保護する必要がある資格情報が含まれています。 これらの資格情報をコードに含めたり、資格情報をソース管理にチェックインしたりしないでください。 詳細については、Azure サービス プリンシパルの作成に関するページを参照してください。

SPN の作成とロールの割り当ての詳細については、「 Azure サービス プリンシパルの作成を参照してください。

手順 2: 資格情報オブジェクトを作成する

SPN で使用する資格情報オブジェクトを作成するには、PowerShell ウィンドウを開き、次のコマンドを実行します。

$Credential = Get-Credential

このコマンドは、パスワードの入力を求めます。

手動によるパスワード入力を必要とせずに資格情報オブジェクトの作成を自動化するには、「 Get-Credential(例 4)」を参照してください。 このスクリプトにはプレーンテキスト資格情報が含まれています。これは、一部の企業のセキュリティ標準に違反する可能性があります。

手順 3: Azure RBAC 対応 AKS クラスターを作成する

SPN (オプション A) を使用して Azure RBAC 対応クラスターを作成することも、クラスターを対話形式で作成することもできます (オプション B)。

オプション A: SPN を使用して Azure RBAC 対応 AKS ターゲット クラスターを作成する

SPN を使用して Azure RBAC が有効になっている AKS ターゲット クラスターを作成するには:

  1. ターゲット クラスターで使用する SPN がまだない場合は、今すぐ SPN を作成

  2. 新しい SPN はクラスターの作成時に 1 回限り使用されるため、パスワードの管理は必要ありません。

  3. クラスターをデプロイする Azure ローカル ノードまたは Windows サーバーで PowerShell ウィンドウを開き、次のコマンドを実行します。

    New-AksHciCluster -name "<cluster name>"  -enableAzureRBAC -resourceGroup "<resource group name>" -subscriptionID "<subscription ID>" -tenantId "<tenant ID>" -credential $Credential -location "eastus" -appId $SERVER_APP_ID -appSecret $SERVER_APP_SECRET -aadClientId $CLIENT_APP_ID -nodePoolName <name of node pool> 
    

オプション B: Azure RBAC 対応 AKS ターゲット クラスターを対話形式で作成する

Azure RBAC 対応ターゲット クラスターを対話形式で作成する場合は、次の手順に従います。

  1. クラスターをデプロイする Azure ローカル ノードまたは Windows サーバーで PowerShell ウィンドウを開きます。

  2. 次の connect-azaccount -deviceauth コマンドを実行して Azure にサインインします。

    connect-azaccount -deviceauth
    

    コマンドは、デバイス コード フローを使用して認証を求めます。

  3. サブスクリプション コンテキストを、ターゲット クラスターが作成されるサブスクリプションに設定します。

    Set-AzContext -Subscription "subscriptionName"
    
  4. Azure RBAC を有効にして、AKS ターゲット クラスターを作成します。

    New-AksHciCluster -name "<cluster name>"  -enableAzureRBAC -resourceGroup "<name of resource group>"  -location "eastus" -appId $SERVER_APP_ID -appSecret $SERVER_APP_SECRET -aadClientId $CLIENT_APP_ID -nodePoolName <name of node pool> 
    

手順 4: Azure RBAC を使用して AKS クラスターに接続する

これで、AKS クラスターでの Azure RBAC のセットアップが完了しました。 Azure RBAC のセットアップをテストするには、AKS クラスターに接続します。 Azure RBAC は接続を認証します。

このセクションの手順では、 connectedk8s プロキシ メソッドを使用して AKS クラスターに接続し、プライベート ネットワーク経由で AKS クラスターに接続します。

connectedk8s プロキシメソッドを使用してインターネット経由で AKS クラスターに接続する

connectedk8s プロキシメソッドを使用して、インターネット上のどこからでも認証/承認要求を送信します。 この方法を使用すると、200 グループに制限されます。

connectedk8s プロキシ メソッドを使用して AKS クラスターに接続するには、次の手順に従います。

  1. Azure CLI ウィンドウを開き、 az login を使用して Azure に接続します。 詳細については、「Azure CLI を使用してサインインする」を参照してください。

  2. 必要に応じて、Azure アカウントのサブスクリプションを、AKS クラスターの作成に使用したサブスクリプションに設定します。

    az account set -subscription "<mySubscription>" 
    
  3. Azure に接続していることを確認します。

    az account show
    
  4. プロキシ プロセスを開始します。

    az connectedk8s proxy -n <cluster name> -g <resource group name>
    
  5. クラスターに要求を送信して、認証が正しく機能していることを確認します。 接続したターミナルを開いたままにして、別のタブを開き、クラスターに要求を送信します。 Azure RBAC の構成に基づいて応答を取得する必要があります。

  6. Ctrl + C キーを押して、connectedk8s プロキシ接続を閉じます。

プライベート ネットワーク経由で AKS クラスターに接続する

プライベート ネットワーク経由で AKS クラスターに接続する場合、使用できるグループの数に制限はありません。

Microsoft Entra kubeconfig ログインとオンプレミス コンピューター (Azure ローカル クラスターなど) を取得するには、次のコマンドを使用して Microsoft Entra kubeconfig を生成します。 Microsoft Entra kubeconfig は、クライアント コンピューターから接続するユーザーに配布できます。 Microsoft Entra kubeconfig にはシークレットは含まれません。

プライベート ネットワーク経由で AKS クラスターに接続するには、次の手順に従います。

  1. kubeconfig ファイルをダウンロードします。

    Get-AksHciCredential -Name <cluster name> -aadauth
    
  2. kubectl コマンド api-serverを実行して、AKS API サーバーへの要求の送信を開始します。 Microsoft Entra 資格情報の入力を求められます。 警告メッセージが表示される場合がありますが、無視してもかまいません。

kubelogin 認証プラグインへの更新

Note

このセクションの情報は、AKS バージョン 1.0.17.10310 以降に適用されます。 バージョン情報については、リリース ノート を参照してください。

AKS クラスターと通信するための認証トークンを提供するには、 Kubectl クライアント 認証プラグインが必要です

Azure kubelogin.exe バイナリ認証プラグインを必要とする kubeconfig ファイルを生成するには、次の PowerShell コマンドを実行します。

Get-AksHciCredential -Name <cluster name> -aadauth

このコマンドは、 kubelogin.exe バイナリもダウンロードします。 kubelogin.exe ファイルの場所を見つけるには、次のコマンドを実行します。

$workingdir = (Get-AksHciConfig).Akshci.installationPackageDir

このコマンドは、 kubelogin.exe がダウンロードされる場所へのパスを返します。 kubelogin.exe ファイルを Azure ローカル ノードまたはクライアント コンピューターにコピーします。 Azure Local の場合は、次の例で説明するように、ファイルをパスにコピーします。 クライアント コンピューターの場合は、実行可能ファイルをクライアント コンピューターにコピーし、パスに追加します。 次に例を示します。

cp $workingdir\kubelogin.exe "c:\program files\akshci"

または、クライアント コンピューターに kubelogin.exe をダウンロードするには、次のコマンドを実行します。

wget https://github.com/Azure/kubelogin/releases/download/v0.0.26/kubelogin-win-amd64.zip -OutFile kubelogin-win-amd64.zip

kubelogin認証プラグインに変換する方法の詳細については、GitHub の Azure kubelogin のページを参照してください。

次のステップ