Azure ロールベースのアクセス制御を使用して Azure Kubernetes Fleet Manager リソースへのアクセスを許可する

Azure ロールベースのアクセス制御 (Azure RBAC) は Azure Resource Manager 上に構築された承認システムであり、Azure リソースに対するアクセスをきめ細かく管理できます。

この記事では、Azure Kubernetes Fleet Manager (Kubernetes Fleet) リソースへのアクセスに使用できるさまざまな組み込み Azure RBAC ロールの概要を説明します。

コントロール プレーン

このロールは、Azure Resource Manager (ARM) Fleet リソースおよびサブリソースへのアクセスを許可し、ハブ クラスターの有無にかかわらず両方の Kubernetes Fleet リソースに適用されます。

ロール名 説明 使用方法
Azure Kubernetes Fleet Manager 共同作成者 このロールは、Azure Kubernetes Fleet Manager によって提供される Azure リソース (フリート、フリート メンバー、フリート更新戦略、フリート更新実行などを含む) への読み取りおよび書き込みアクセスを許可します。 このロールを使用すると、Kubernetes Fleet リソースおよびサブリソースにのみ適用される共同作成者のアクセス許可を付与できます。 たとえば、このロールを Fleet リソースの定義と保守を担当する Azure 管理者に付与できます。

データ プレーン

これらのロールは、Fleet ハブの Kubernetes オブジェクトへのアクセスを許可するため、ハブ クラスターを持つ Kubernetes Fleet リソースにのみ適用されます。

データ プレーン ロールは、Fleet ハブ クラスター スコープで割り当てることも、ロールの割り当てスコープに /namespace/<namespace> を追加することで個々の Kubernetes 名前空間スコープで割り当てることもできます。

ロール名 説明 使用方法
Azure Kubernetes Fleet Manager RBAC リーダー フリートマネージド ハブ クラスター内の名前空間内のほとんどの Kubernetes リソースへの読み取り専用アクセスを許可します。 ロールまたはロールのバインドを表示することはできません。 このロールでは、シークレットの表示は許可されません。これは、シークレットの内容を読み取ると、名前空間の ServiceAccount 資格情報にアクセスでき、それにより名前空間の任意の ServiceAccount として API にアクセスできるようになるためです (特権エスカレーションの形式)。 クラスター スコープでこのロールを適用すると、すべての名前空間へのアクセス権が付与されます。 このロールを使用すると、選択した機密ではない Kubernetes オブジェクトを名前空間またはクラスター スコープで読み取る機能を付与できます。 たとえば、このロールをレビュー目的で付与できます。
Azure Kubernetes Fleet Manager RBAC ライター フリートマネージド ハブ クラスター内の名前空間内のほとんどの Kubernetes リソースへの読み取りおよび書き込みアクセスを許可します。 このロールでは、ロールまたはロールのバインドを表示または変更することはできません。 ただし、このロールを使用すると、名前空間内の任意の ServiceAccount としてシークレットにアクセスできるため、名前空間内の任意の ServiceAccount の API アクセス レベルを取得するために使用できます。 クラスター スコープでこのロールを適用すると、すべての名前空間へのアクセス権が付与されます。 このロールを使用すると、選択した Kubernetes オブジェクトを名前空間またはクラスター スコープで書き込む機能を付与できます。 たとえば、特定の名前空間内のオブジェクトを担当するプロジェクト チームによって使用されます。
Azure Kubernetes Fleet Manager RBAC 管理者 フリートマネージド ハブ クラスター内の名前空間内の Kubernetes リソースへの読み取りおよび書き込みアクセスを許可します。 名前空間内のほとんどのオブジェクト (ResourceQuota オブジェクトと名前空間オブジェクト自体を除く) に対する書き込みアクセス許可を付与します。 クラスター スコープでこのロールを適用すると、すべての名前空間へのアクセス権が付与されます。 このロールを使用すると、選択した Kubernetes オブジェクト (ロールおよびロール バインドを含む) を名前空間またはクラスター スコープで管理する機能を付与できます。 たとえば、特定の名前空間内のオブジェクトを担当するプロジェクト チームによって使用されます。
Azure Kubernetes Fleet Manager RBAC クラスター管理者 フリートマネージド ハブ クラスター内のすべての Kubernetes リソースへの読み取り/書き込みアクセスを許可します。 このロールを使用すると、名前空間またはクラスター スコープですべての Kubernetes オブジェクト (CRD を含む) へのアクセスを許可できます。

ロールの割り当ての例

Azure CLI を使用して Azure RBAC ロールを付与できます。 たとえば、Kubernetes Fleet ハブ クラスター スコープでロールの割り当てを作成するには:

IDENTITY=$(az ad signed-in-user show --output tsv --query id)
FLEET_ID=$(az fleet show --resource-group $GROUP --name $FLEET --output tsv --query id)

az role assignment create --role 'Azure Kubernetes Fleet Manager RBAC Reader' --assignee "$IDENTITY" --scope "$FLEET_ID"

個々の Kubernetes 名前空間にロールの割り当てのスコープを設定することもできます。 たとえば、Kubernetes Fleet ハブの既定の Kubernetes 名前空間に対するロールの割り当てを作成するには:

IDENTITY=$(az ad signed-in-user show --output tsv --query id)
FLEET_ID=$(az fleet show --resource-group $GROUP --name $FLEET --output tsv --query id)

az role assignment create --role 'Azure Kubernetes Fleet Manager RBAC Reader' --assignee "$IDENTITY" --scope "$FLEET_ID/namespaces/default"