「[[マイクロソフト系技術情報 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]], [[:セキュリティ]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS