最小権限の原則に基づいて、ワーカーノードに割り当てられた Resource Access Management (RAM) ロールの権限を制限し、ACK マネージドクラスターのセキュリティを向上させます。
RAM ポリシーを変更すると、必要な権限が削除された場合にアプリケーションやアドオンで障害が発生することがあります。本番環境に変更を適用する前に、ステージング環境でテストしてください。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
Kubernetes 1.18 以降を実行している ACK マネージドクラスター (Pro または Basic) があること。必要に応じて、ACK マネージドクラスターを作成するか、クラスターを手動でアップグレードしてください。または、ACK 専用クラスターを ACK マネージド Pro クラスターに移行することもできます。
ACK マネージドクラスターに必要なデフォルトのサービスロールに権限が付与されていること。詳細については、「サービスロールに権限を付与する」をご参照ください。
ステップ 1: 現在の権限の評価
ワーカー RAM ロールに制限が必要な過剰な権限があるかどうかを判断します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスターリスト ページで、目的のクラスターの名前をクリックします。基本情報 タブで、Worker RAM ロール の横にあるリンクをクリックします。
RAM コンソールで、役割 ページの 権限管理 タブに移動します。
ポリシーがアタッチされていない場合、追加の操作は不要です。ワーカー RAM ロールには追加の権限がありません。
ポリシー (例:
k8sWorkerRolePolicy-db8ad5c7***) がアタッチされている場合、ロールには必要以上の権限が付与されている可能性があります。最小権限の原則に基づいてビジネスニーズに照らして評価し、次のステップに進んでください。
アタッチされている各ポリシーを確認し、付与されている Alibaba Cloud API アクションを特定します。これにより、変更を加える前のベースラインを確立できます。
ステップ 2: アドオンのアップグレード
従来、ACK アドオンはクラウドリソースへのアクセスにノードのワーカー RAM ロールを使用していました。現在の ACK アドオンは、代わりにトークンベースの認証 (マネージドサービスロール) を使用しています。クラスターアドオンをアップグレードし、監査ログを分析することで、ワーカー RAM ロールから不要な権限を削除し、潜在的なセキュリティインシデントの影響を制限します。
アドオンは一度に 1 つずつアップグレードしてください。次のアップグレードを開始する前に、各アップグレードが成功したことを確認してください。アップグレードする前に、各アドオンの備考をお読みください。
詳細については、「アドオンを管理する」をご参照ください。
アドオン管理 経由でインストールされたアドオン
アドオン管理 ページで、インストールされている各アドオンを、以下に示す最小バージョン以上にアップグレードします。 既に最小バージョン以上のアドオンについては、表に記載のコマンドを使用して再デプロイするか、コンソール経由で 再デプロイ します。
監視と可観測性
アドオン | 最小バージョン | 再デプロイコマンド | 備考 |
| v0.3.9.4-ff225cd-aliyun |
| なし |
| v1.5.5 |
| なし |
| 1.1.11 |
| なし |
| 1.0.10 |
| アップグレードする前に、マネージドコストロールに権限を付与してください。 |
| 1.2.16 |
| なし |
ネットワーク
アドオン | 最小バージョン | 再デプロイコマンド | 備考 |
| v1.0.10.333-gfd2b7b8-aliyun |
| クラスターの Terway モードに応じて Terway をアップグレードしてください。詳細については、「Terway ネットワークプラグインを使用する」をご参照ください。アップグレード後、Terway 設定を確認してください。 |
| v1.0.10.333-gfd2b7b8-aliyun |
|
|
| v1.0.10.333-gfd2b7b8-aliyun |
|
|
| v1.2.1 |
| なし |
| 1.1.5 |
| アップグレードする前に、マネージド Microservices Engine (MSE) ロールに権限を付与してください。 |
ストレージ
アドオン | 最小バージョン | 再デプロイコマンド | 備考 |
| v1.18.8.45-1c5d2cd1-aliyun |
| なし |
| v1.18.8.45-1c5d2cd1-aliyun |
| なし |
| v1.18.8.55-e398ce5-aliyun |
| なし |
| v1.14.8.51-842f0a81-aliyun |
| なし |
| v1.14.8.109-649dc5a-aliyun |
| FlexVolume を CSI に移行してください。 |
ロギング
アドオン | 最小バージョン | 再デプロイコマンド | 備考 |
| v1.0.29.1-0550501-aliyun |
| なし |
| v3.0.2 |
| なし |
セキュリティとイメージ管理
アドオン | 最小バージョン | 再デプロイコマンド | 備考 |
| v23.02.06.2-74e2172-aliyun |
| アップグレードする前に、マネージド Container Registry (ACR) ロールに対して権限を付与します。カスタム RAM 権限がなく、アカウント間でイメージをプルする必要がない場合は、アドオン管理に移動し、tokenMode を managedRole に設定します。プライベートイメージの認証情報なしのイメージプルが不要な場合は、このアドオンをアンインストールします。 |
| 3.0.11 |
| アップグレードする前に、マネージド MSE ロールに権限を付与してください。 |
Cluster Autoscaler (ノードプールからインストール)
アドオン | 最小バージョン | 再デプロイコマンド | 備考 |
| v1.3.1-bcf13de9-aliyun |
| 現在のバージョンを確認するには、次のいずれかの方法を使用します。
|
Terway 設定の確認
クラスターに terway、terway-eni、または terway-eniip がインストールされている場合は、Terway ConfigMap に正しい認証情報パスが含まれていることを確認してください。
次のコマンドを実行して、Terway ConfigMap を編集します。
kubectl edit cm eni-config -n kube-systemeni_confセクションで、以下の行を確認してください。"credential_path": "/var/addon/token-config",この行が存在する場合、変更は不要です。
この行がない場合は、
min_pool_size設定の下に追加してください。
上記のネットワークテーブルから対応する再デプロイコマンドを実行して、Terway ワークロードを再デプロイします。
ステップ 3: 監査ログの収集
監査ログを設定して、ワーカー RAM ロールが実行する Alibaba Cloud API 操作を追跡します。このデータに基づいて、まだ使用されている権限と安全に削除できる権限を判断できます。
監査ログは少なくとも 1 週間収集してください。
ActionTrail コンソールにログインします。
クラスターが配置されているリージョンに、単一アカウントの証跡を作成します。 証跡の作成時に、Log Service に配信 を選択します。 詳細については、「単一アカウントの証跡の作成」をご参照ください。
ActionTrail がサポートするサービスの完全なリストについては、「サポートされている Alibaba Cloud サービス」をご参照ください。
ステップ 4: クラスター機能のテスト
アドオンをアップグレードし、ワークロードを再デプロイした後、コアクラスター機能が正常に動作することを確認します。
カテゴリ | テストケース | 参照 |
コンピューティング | ノードのスケールアウトとスケールインを実行します。 | |
ネットワーク | Pod に IP アドレスが割り当てられていることを確認します。 | |
ストレージ | 外部ストレージを使用するワークロードをデプロイします (該当する場合)。 | |
監視 | 監視とアラートデータが利用可能であることを確認します。 | |
弾力性 | ノードの自動スケーリングをトリガーします (該当する場合)。 | |
セキュリティ | 認証情報なしでプライベートイメージをプルします (該当する場合)。 |
上記のテストに加えて、クラスターにデプロイされているアプリケーションのビジネスロジックをテストしてください。
ステップ 5: 監査ログの分析
少なくとも 1 週間ログを収集した後、データをクエリして、ワーカー RAM ロールが実行した API 操作を特定します。
Simple Log Service (SLS) コンソールにログインします。
[プロジェクト] セクションで、ステップ 3 で指定したプロジェクトをクリックします。

タブで、目的のログストアをクリックします。 ログストアの名前は
actiontrail_<trail_name>です。次のクエリを実行して、ワーカー RAM ロールの Security Token Service (STS) トークンを介して呼び出される API 操作を一覧表示します。
<worker_role_name>を、お使いのクラスターのワーカー RAM ロールの名前に置き換えます。結果には、どの Alibaba Cloud サービスと API 操作が呼び出されているかが表示されます。このデータは、ステップ 6 で保持する権限と削除する権限を決定するために使用します。* and event.userIdentity.userName: <worker_role_name> | select "event.serviceName", "event.eventName", count(*) as total GROUP BY "event.eventName", "event.serviceName"
ステップ 6: 未使用の権限の削除
監査ログ分析に基づいて、ワーカー RAM ロールが必要としない権限を削除します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスターリスト ページで、目的のクラスターの名前をクリックします。基本情報 タブで、Worker RAM ロール の横にあるリンクをクリックします。
役割 ページの 権限管理 タブで、宛先アクセスポリシーをクリックして [ポリシー内容] タブに移動します。ポリシーの変更 をクリックします。
重要ポリシードキュメントを変更する前に、バックアップしてください。これにより、必要に応じて権限設定をロールバックできます。
ステップ 5 の監査ログ分析に基づいて、不要な権限を削除します。 例えば、監査期間中に呼び出されなかったポリシーから
Action権限を削除します。 クエリが結果を返さなかった場合、ロールからポリシー全体を安全にデタッチできます。ステップ 2 にリストされているコマンドを使用して、ワークロードを再デプロイします。
ワーカー RAM ロールがアドオンまたはアプリケーションに必要な最小限の権限のみを持つようになるまで、ステップ 4、5、6 を繰り返してください。