「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[Azure]] > [[AKS>Azure Kubernetes Service (AKS)]] --[[AKSをセキュアに利用するためのテクニカルリファレンス]] * 目次 [#n48a71e2] #contents *概要 [#va1f26fe] 複雑なモノなので、それなりに複雑。 *詳細 [#p2c8fc57] **AKS([[制御プレーン>AKSをセキュアに利用するためのテクニカルリファレンス#n7feb42c]])用ID [#qbc64e29] -AKS [[制御プレーン>AKSをセキュアに利用するためのテクニカルリファレンス#n7feb42c]]による管理操作を行うID -これは、[[SPN>Azure サービス プリンシパル]]のAppIDに該当。 **AKSクラスタに必要な権限 [#reb90294] -AKSクラスタ作成には「az aks create」を実行する。 --「az aks create」の実行には高権限が必要 --「az aks create」では以下の操作・権限が必要になる。 -AKSクラスタへのデプロイでは「kubectl apply」を実行する。 --「kubectl apply」の実行にはコンテナ・レジストリのアクセス権限が必要 ***サブスクリプションのContributorロール [#m83cbfc0] 「[[制御プレーン>AKSをセキュアに利用するためのテクニカルリファレンス#n7feb42c]]、[[実行ノード>AKSをセキュアに利用するためのテクニカルリファレンス#u41cdddc]]を作成する。」ために必要になる。 ***[[Azure Active Directory]]のアプリID作成権限 [#u1169638] 「[[AKS(制御プレーン)用ID>#qbc64e29]]を[[Azure Active Directory]]に登録する。」ために必要になる。 ***サブスクリプションのSecurity Adminロール [#t513823c] 「[[AKS(制御プレーン)用ID>#qbc64e29]]に高い権限を持たせる。」ために必要になる。 ***[[ACR>AKSをセキュアに利用するためのテクニカルリファレンス#zbb28090]]にアクセスするAcrPullロール [#wd6c020d] ***[[ACR>Azure Container Registry]]にアクセスするAcrPullロール [#wd6c020d] 「"kubectl apply"の実行のためコンテナ・レジストリをpullする。」ために必要になる。 **[[AKS(制御プレーン)用ID>#qbc64e29]]の作成方式 [#zd36951f] 以下の方法で、「az aks create」を行い、[[AKS(制御プレーン)用ID>#qbc64e29]]を作成する。 ***[[SPN>Azure サービス プリンシパル]]方式 [#c8ea8683] [[AzADのアプリID作成権限>#u1169638]]権限を持って「いない」ケース -ポイント --一年でパスワード(シークレット)が失効する(無期限にも出来る)。 --[[SPN>Azure サービス プリンシパル]]は権限のある人間に作成してもらう。 --パスワード(シークレット)の再設定は、~ 「az aks update-credentials」で行う。 -実行手順 --[[コチラのチュートリアル>Azure Kubernetes Service (AKS)#l3698aeb]]での方式 --Azure Kubernetes Service (AKS) 用のサービス プリンシパル | Microsoft Docs~ https://docs.microsoft.com/ja-jp/azure/aks/kubernetes-service-principal ***[[Managed ID>Azure Managed ID]]方式 [#i3b0bd60] Ownerロール+[[AzADのアプリID作成権限>#u1169638]]権限を持ってい「る」ケース -ポイント --扱いが容易。 --[[SPN>Azure サービス プリンシパル]]をラップするレイヤらしい。 -実行手順 --[[コチラのチュートリアル>AKSをセキュアに利用する構築デモ(コピペ用)#k45473a7]]での方式 --「az aks create」に「--enable-managed-identity」オプションを追加して実行 --Azure Kubernetes Service でマネージド ID を使用する | Microsoft Docs~ https://docs.microsoft.com/ja-jp/azure/aks/use-managed-identity **付与する権限と作成するAppIDの対応 [#z3a90ed1] ***付与する権限 [#ec478794] 以下の権限が必要になる。 -[[ACRにアクセスするAcrPullロール>#wd6c020d]] -[[サブスクリプションのContributorロール>#m83cbfc0]] ***作成するAppID [#qc2c2db1] -[[SPN方式>#c8ea8683]] --明示的に作成したSPNの1つのAppIDに、 ---[[Contributorロールが付与される。>Azure サービス プリンシパル#cab71a53]] ---[[AcrPullロールを明示的に付与する。>Azure サービス プリンシパル#e9e4c0d9]] --実行手順~ [[コチラのチュートリアル>Azure Kubernetes Service (AKS)#l3698aeb]]での方式 -[[Managed ID方式>#i3b0bd60]] --以下の2つのSPNのAppIDが自動的に生成される。 ---<clustername>~ [[Contributorロールが付与される。>Azure サービス プリンシパル#cab71a53]] ---<clustername>-agentpool~ [[AcrPullロールを明示的に付与する。>Azure サービス プリンシパル#e9e4c0d9]] --実行手順~ [[コチラのチュートリアル>AKSをセキュアに利用する構築デモ(コピペ用)#x3d4c330]]での方式 **AKS管理リソースグループ外を利用する場合 [#ycbd0a55] 対象のリソースに対する[[サブスクリプションのContributorロール>#m83cbfc0]]権限を付与する。 ***[[予め作成したVNET上にAKSクラスタを作成>Azure サービス プリンシパル#w59a5f58]] [#db6b9d7e] 既存のVNETに対する[[サブスクリプションのContributorロール>#m83cbfc0]]権限を付与する。 -[[SPN方式>#c8ea8683]] --概要~ ... --実行手順~ %%コチラのチュートリアルでの方式%% -[[Managed ID方式>#i3b0bd60]] --概要~ ... --実行手順~ [[コチラのチュートリアル>AKSをセキュアに利用する構築デモ(コピペ用)#k45473a7]]での方式 ***... [#m528c866] -基本的に、[[上記>#db6b9d7e]]と同じ。 -AcrPull+[[Managed ID>Azure Managed ID]]のような場合は、~ 専用コマンドが用意されているケースはありそう。 *参考 [#qfb85783] -az aks | Microsoft Docs --az aks create~ https://docs.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-create --az aks update-credentials~ https://docs.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-update-credentials ---- Tags: [[:クラウド]], [[:コンテナ]], [[:Azure]], [[:AKS]], [[:IaC]], [[:セキュリティ]]