ack-pod-identity-webhook コンポーネントは、Container Service for Kubernetes (ACK) クラスターにおける RAM ロール for Service Accounts (RRSA) の構成を自動化します。このコンポーネントは、Kubernetes MutatingAdmissionWebhook を使用して、OpenID Connect (OIDC) トークンのマウントおよび環境変数を Pod に挿入し、Pod レベルの権限隔離を実現した Alibaba Cloud サービスへのパスワード不要のアクセスを可能にします。
仕組み
クラスターで Pod が作成されると、Webhook はリクエストをインターセプトし、コンポーネント、名前空間、サービスアカウント、Pod の 4 つのレベルで設定を確認します。条件が満たされると、Webhook は Pod の spec に以下をインジェクトします:
認証用の OIDC トークンのボリュームマウント
ALIBABA_CLOUD_STS_ENDPOINT、ALIBABA_CLOUD_STS_REGION、ALIBABA_CLOUD_VPC_ENDPOINT_ENABLED(バージョン 0.4.0 以降) を含む、セキュリティトークンサービス (STS) アクセス用の環境変数
これにより、静的な AccessKey 認証情報が不要になります。各 Pod は、そのサービスアカウントに関連付けられた RAM ロールのみを偽装し、きめ細かい権限の隔離を実現します。
設定手順については、「RRSA を使用して ServiceAccount の RAM 権限を設定し、Pod の権限の隔離を実装する」をご参照ください。
設定リファレンス
このコンポーネントは 4 つのレベルでの設定をサポートしています。下位レベルの設定が上位レベルの設定より優先されます。
コンポーネント設定
| パラメーター | タイプ | 説明 | デフォルト | バージョン |
|---|---|---|---|---|
AutoInjectSTSEnvVars | boolean | デフォルトですべての Pod に STS 関連の環境変数 (ALIBABA_CLOUD_STS_ENDPOINT、ALIBABA_CLOUD_STS_REGION、ALIBABA_CLOUD_VPC_ENDPOINT_ENABLED) をインジェクトします。無効にするには false に設定します。 | true | 0.4.0+ |
名前空間の設定
| パラメーター | タイプ | 説明 |
|---|---|---|
pod-identity.alibabacloud.com/injection | ラベル | on に設定すると、名前空間内のすべての Pod に対して設定の自動インジェクトが有効になります。他の値やラベルがない場合は、名前空間レベルのインジェクトは無効になります。 |
apiVersion: v1
kind: Namespace
metadata:
name: test
labels:
pod-identity.alibabacloud.com/injection: 'on'サービスアカウントの設定
| パラメーター | タイプ | 説明 | バージョン |
|---|---|---|---|
pod-identity.alibabacloud.com/role-name | アノテーション | このサービスアカウントに関連付ける RAM ロール名。インジェクトを行うために必須です。 | - |
pod-identity.alibabacloud.com/service-account-token-expiration | アノテーション | OIDC トークンの有効期間 (秒)。有効範囲:600~43200。デフォルト:3600。無効な値の場合はデフォルト値が使用されます。 | - |
pod-identity.alibabacloud.com/inject-sts-endpoint | アノテーション | on に設定すると、ALIBABA_CLOUD_STS_ENDPOINT 環境変数が Pod にインジェクトされます。 | 0.3.0+ |
apiVersion: v1
kind: ServiceAccount
metadata:
name: test-sa
namespace: test
annotations:
pod-identity.alibabacloud.com/role-name: test-role
pod-identity.alibabacloud.com/service-account-token-expiration: '3600'
pod-identity.alibabacloud.com/inject-sts-endpoint: 'on'Pod の設定
| パラメーター | タイプ | 説明 | バージョン |
|---|---|---|---|
pod-identity.alibabacloud.com/injection | ラベル | on に設定すると、この Pod のインジェクトが有効になります。設定されていない場合、名前空間の設定がインジェクトの動作を決定します。 | 0.2.0+ |
pod-identity.alibabacloud.com/service-account-token-expiration | アノテーション | この Pod の OIDC トークンの有効期間 (秒)。有効範囲:600~43200。デフォルト:3600。サービスアカウントのアノテーションより優先されます。 | - |
pod-identity.alibabacloud.com/only-containers | アノテーション | インジェクトを特定のコンテナーに制限します。コンテナー名をカンマで区切ります。設定されていない場合、すべてのコンテナーがインジェクトの対象となります。 | - |
pod-identity.alibabacloud.com/skip-containers | アノテーション | 特定のコンテナーをインジェクトから除外します。コンテナー名をカンマで区切ります。あるコンテナーが only-containers と skip-containers の両方に指定されている場合、そのコンテナーに対する only-containers の設定は無視されます。 | - |
apiVersion: v1
kind: Pod
metadata:
name: test-pod
namespace: test
labels:
pod-identity.alibabacloud.com/injection: 'on'
annotations:
pod-identity.alibabacloud.com/service-account-token-expiration: '3600'
pod-identity.alibabacloud.com/only-containers: 'controller,test'設定の優先順位
設定が複数のレベルに存在する場合、以下の優先順位 (高いものから低いものへ) が適用されます:
Pod - Pod レベルのアノテーションとラベルは、他のすべてのレベルをオーバーライドします。
サービスアカウント - サービスアカウントのアノテーションは、Pod レベルでオーバーライドされない限り、そのサービスアカウントを使用するすべての Pod に適用されます。
名前空間 - 名前空間のラベルは、その名前空間内のすべての Pod のインジェクトを有効にします。
コンポーネント - コンポーネントレベルの設定は、Webhook のグローバルな動作を制御します。
Pod の pod-identity.alibabacloud.com/service-account-token-expiration アノテーションは、サービスアカウントの同じアノテーションをオーバーライドします。
変更履歴
2025年11月
| バージョン | イメージ | 日付 | 変更点 | 影響 |
|---|---|---|---|---|
| 0.4.0 | registry-cn-hangzhou.ack.aliyuncs.com/acs/ack-pod-identity-webhook:0.4.0 | 2025年11月24日 | STS 環境変数:ALIBABA_CLOUD_STS_ENDPOINT、ALIBABA_CLOUD_STS_REGION、ALIBABA_CLOUD_VPC_ENDPOINT_ENABLED のデフォルトでのインジェクトを追加しました。AutoInjectSTSEnvVars: false で無効化できます。Golang を 1.24.10 にアップグレードしました。 | コンポーネントのアップグレードに異常が発生すると、Pod の作成が失敗する可能性があります。オフピーク時間帯にアップグレードを実行してください。 |
2025年9月
| バージョン | イメージ | 日付 | 変更点 | 影響 |
|---|---|---|---|---|
| 0.3.1 | registry-cn-hangzhou.ack.aliyuncs.com/acs/ack-pod-identity-webhook:0.3.1 | 2025年9月8日 | 安定性向上のため、Golang を 1.24.6 にアップグレードしました。 | コンポーネントのアップグレードに異常が発生すると、Pod の作成が失敗する可能性があります。オフピーク時間帯にアップグレードを実行してください。 |
2025年6月
| バージョン | イメージ | 日付 | 変更点 | 影響 |
|---|---|---|---|---|
| 0.3.0 | registry-cn-hangzhou.ack.aliyuncs.com/acs/ack-pod-identity-webhook:v0.3.0.0-g433f84b-aliyun | 2025年6月6日 | ALIBABA_CLOUD_STS_ENDPOINT をインジェクトするための pod-identity.alibabacloud.com/inject-sts-endpoint ServiceAccount アノテーションを追加しました。 | コンポーネントのアップグレードに異常が発生すると、Pod の作成が失敗する可能性があります。オフピーク時間帯にアップグレードを実行してください。 |
2025年3月
| バージョン | イメージ | 日付 | 変更点 | 影響 |
|---|---|---|---|---|
| 0.2.1 | registry-cn-hangzhou.ack.aliyuncs.com/acs/ack-pod-identity-webhook:v0.2.1.0-g52e519c-aliyun | 2025年3月18日 | 安定性向上のため、Golang を 1.23.7 にアップグレードしました。 | コンポーネントのアップグレードに異常が発生すると、Pod の作成が失敗する可能性があります。オフピーク時間帯にアップグレードを実行してください。 |
2024年12月
| バージョン | イメージ | 日付 | 変更点 | 影響 |
|---|---|---|---|---|
| 0.2.0 | registry-cn-hangzhou.ack.aliyuncs.com/acs/ack-pod-identity-webhook:v0.2.0.11-g2f0c2e7-aliyun | 2024年12月19日 | pod-identity.alibabacloud.com/injection: 'on' ラベルによる Pod レベルのインジェクトを追加しました。Kubernetes 1.32 のサポートを最適化しました。 | コンポーネントのアップグレードに異常が発生すると、Pod の作成が失敗する可能性があります。オフピーク時間帯にアップグレードを実行してください。 |
2023年6月
| バージョン | イメージ | 日付 | 変更点 | 影響 |
|---|---|---|---|---|
| 0.1.1 | registry.cn-hangzhou.aliyuncs.com/acs/ack-pod-identity-webhook:v0.1.1.0-gbddcb74-aliyun | 2023年6月7日 | ACK サーバーレスクラスターとの互換性を向上させました。 | コンポーネントのアップグレードに異常が発生すると、Pod の作成が失敗する可能性があります。オフピーク時間帯にアップグレードを実行してください。 |
2023年2月
| バージョン | イメージ | 日付 | 変更点 | 影響 |
|---|---|---|---|---|
| 0.1.0 | registry.cn-hangzhou.aliyuncs.com/acs/ack-pod-identity-webhook:v0.1.0.9-g26b8fde-aliyun | 2023年2月1日 | 初回リリース。アプリケーション Pod への OIDC トークンの自動マウントと環境変数の設定。 | 初回リリース。 |