最小権限の原則に基づいてワーカーノードに割り当てられた Resource Access Management (RAM) ロールの権限を制限して、Container Service for Kubernetes (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 |
|
ロギング
アドオン | 最小バージョン | 再デプロイコマンド | 注意 |
| 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:クラスター機能のテスト
アドオンをアップグレードしてワークロードを再デプロイした後、クラスターのコア機能がまだ正しく動作することを確認してください。
カテゴリ | テストケース | リファレンス |
コンピューティング | ノードのスケールアウトとスケールイン。 | |
ネットワーク | IPアドレスがPodに割り当てられていることを確認します。 | |
ストレージ | 外部ストレージを使用するワークロードをデプロイします (該当する場合)。 | |
モニタリング | モニタリングとアラートデータが利用可能であることを確認します。 | |
弾力性 | ノードの自動スケーリングをトリガーします (該当する場合)。 | |
セキュリティ | 認証情報なしでプライベートイメージをプルします (該当する場合)。 |
上記のテストに加えて、クラスターにデプロイされたアプリケーションのビジネスロジックをテストしてください。
ステップ 5:監査ログの分析
少なくとも1週間ログを収集した後、データをクエリして、ワーカー RAM ロールが実行した API オペレーションを特定してください。
Simple Log Service (SLS) コンソールにログインします。
[プロジェクト] セクションで、ステップ 3 で指定したプロジェクトをクリックしてください。

タブで、宛先のLogstoreをクリックしてください。 Logstoreの名前は
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を繰り返してください。