ACK管理クラスターのノードセキュリティを確保するために、最小権限の原則に基づいて、クラスターのワーカーRAMロールの権限を手動で制限できます。
前提条件
Kubernetes 1.18以降を実行するACKマネージドクラスターが作成されます。 ACK管理クラスターは、ACK ProクラスターとACK Basicクラスターに分類されます。 詳細については、「ACK管理クラスターの作成」および「ACKクラスターの更新」をご参照ください。
ACK専用クラスターのワーカーRAMロールの権限を制限する場合は、まずACK専用クラスターからACK Proクラスターに移行する必要があります。 詳細については、「ACK専用クラスターからACK Proクラスターへのホットマイグレーション」をご参照ください。
デフォルトのロールがACKに割り当てられ、ACK管理クラスターに必要な権限が付与されます。 詳細については、「デフォルトのロールをACKに割り当てる」をご参照ください。
ステップ1: 権限制限が必要かどうかの確認
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 クラスターの詳細ページで、[基本情報] タブをクリックします。 Worker RAMロールの右側にあるハイパーリンクをクリックして、RAMコンソールに移動します。
[ロールの詳細] ページの [権限] タブで、ポリシーが表示されているかどうかを確認します。
ポリシーが表示されない場合は、ワーカーRAMロールの権限を制限する必要はありません。
k8sWorkerRolePolicy-db8ad5c7 *** などのポリシーが表示されている場合は、ワーカーRAMロールの権限を制限する必要があります。 この場合、要件と最小権限の原則に基づいて、ワーカーRAMロールの権限を制限することをお勧めします。
ステップ2: システムコンポーネントの更新
ACK管理クラスターの主要なシステムコンポーネントを、必要最小限のバージョンまたは最新バージョンに更新します。 詳細については、「システムコンポーネントの管理」をご参照ください。
複数のコンポーネントを同時に更新しないでください。 代わりに、それらを1つずつ更新します。 コンポーネントの更新を開始する前に、前のコンポーネントが正常に更新されていることを確認してください。
コンポーネントを更新する前に、次の表のコンポーネントの注意事項を読んで理解することをお勧めします。
コンポーネントは、ACKコンソールの [アドオン] ページから、またはノードプールを使用してインストールできます。 次の表に、上記の方法でインストールされたコンポーネントを更新する方法を示します。
[アドオン] ページからインストールされたコンポーネント
[アドオン] ページに移動し、次の表の説明に基づいてインストールされているコンポーネントを更新します。 コンポーネントがすでに必要最小限のバージョンまたは最新バージョンの場合は、次の表の対応するコマンドを実行するか、ACKコンソールで [再デプロイ] をクリックして、コンポーネントを再デプロイします。
コンポーネント | 最小必要バージョン | 再デプロイコマンド | 補足 |
metrics-server | v0.3.9.4-ff225cd-aliyun |
| なし |
alicloud-monitor-controller | v1.5.5 |
| なし |
logtail-ds | v1.0.29.1-05501-aliyun |
| |
terway | v1.0.10.333-gfd2b7b8-aliyun |
|
|
terway-eni | v1.0.10.333-gfd2b7b8-aliyun |
| |
terway-eniip | v1.0.10.333-gfd2b7b8-aliyun |
| |
terway-controlplane | v1.2.1 |
| なし |
flexvolume | v1.14.8.109-649dc5a-aliyun |
| |
csi-plugin | v1.18.8.45-1c5d2c1-aliyun |
| なし |
csi-provisioner | v1.18.8.45-1c5d2c1-aliyun |
| なし |
storage-operator | v1.18.8.55-e398ce5-aliyun |
| なし |
alicloud-disk-controller | v1.14.8.51-842f0a81-aliyun |
| なし |
ack-node-problem-detector | 1.2.16 |
| なし |
aliyun-acr-credential-helper | v23.02.06.2-74e2172-aliyun |
| 更新を開始する前に、権限を付与する必要があります。
|
ack-cost-exporter | 1.0.10 |
| 更新を開始する前に、権限を付与する必要があります。 |
mse-ingress-controller | 1.1.5 |
| 更新を開始する前に、権限を付与する必要があります。 |
腕-プロメテウス | 1.1.11 |
| なし |
ack-onepilot | 3.0.11 |
| 更新を開始する前に、権限を付与する必要があります。 |
ノードプールを使用してインストールされたcluster-autoscaler
コンポーネント | 最小必要バージョン | 再デプロイコマンド | 補足 |
cluster-autoscaler | v1.3.1-bcf13de9-aliyun |
| 次の方法を使用して、cluster-autoscalerのバージョンを表示できます。 cluster-autoscalerの更新方法の詳細については、「 [コンポーネントの更新] cluster-autoscalerの更新」をご参照ください。
|
Terwayの設定を確認する
terway、terway-eni、またはterway-eniipがクラスターにインストールされている場合、kube-system名前空間のeni_conf
ConfigMapであるTerwayの設定ファイルを手動で確認する必要があります。
次のコマンドを実行して、eni_conf ConfigMapを表示および変更します。
kubectl edit cm eni-config -n kube-system
"credential_path": "/var/addon/token-config" 、
設定がeni-conf ConfigMapに含まれている場合、追加のアクションは必要ありません。"credential_path": "/var/addon/token-config"
の設定がeni_conf
ConfigMapに含まれていない場合、min_pool_size
パラメーターの下に新しい行を追加し、行に"credential_path": "/var/addon/token-config" を
指定する必要があります。"credential_path": "/var/addon/token-config",
前の表の対応するコマンドを実行して、Terwayを再デプロイします。
手順3: ActionTrailを使用してクラスターログを収集
ActionTrailを使用してAPI監査ログを収集し、クラスターで実行されたAPI操作を分析します。 これにより、クラスターのワーカーRAMロールにアタッチされたRAMポリシーに依存するアプリケーションを特定できます。 ActionTrailで動作するAlibaba Cloudサービスの詳細については、「ActionTrailで動作するサービス」をご参照ください。
少なくとも1週間以上以内に生成された監査ログを収集することを推奨します。
ActionTrailコンソールに移動し、クラスターが存在するリージョンに単一アカウントのトレイルを作成します。 シングルアカウントトレイルを作成するときは、[Simple Log Serviceへの配信] を選択します。 詳細については、「シングルアカウント証跡の作成」をご参照ください。
ステップ4: クラスターで機能テストを実行する
上記の手順が完了したら、クラスターで機能テストを実行して、クラスターが期待どおりに機能するかどうかを確認します。
テストアイテム | 説明 | 参照 |
コンピューティング | クラスターがノードを期待どおりにスケールできるかどうか。 | |
ネットワーク | クラスターが期待どおりにポッドにIPアドレスを割り当てることができるかどうか。 | |
ストレージ | 外部ストレージが有効になっている場合、クラスターが外部ストレージを使用するワークロードを期待どおりにデプロイできるかどうか。 | |
モニタリング | クラスターが期待どおりにアラートを生成できるかどうか。 | |
拡張性 | 自動スケーリングが有効になっている場合、クラスターがノードを期待どおりに自動的にスケーリングできるかどうか。 | |
セキュリティ | パスワードフリーのイメージプル機能が有効になっている場合、クラスターが期待どおりに使用できるかどうか。 |
機能テストが完了したら、クラスターにデプロイされたビジネスのロジックを確認して、ビジネスが期待どおりに実行されることを確認します。
ステップ5: ActionTrailによって収集されたログを分析する
にログインします。Simple Log Serviceコンソール.
[プロジェクト] セクションで、管理するプロジェクトをクリックします。
プロジェクトの詳細ページで、
を選択し、[ログストア] タブで管理するログストアをクリックします。手順3でActionTrailによって収集されたログを保存するために使用するLogstoreの名前は、actiontrail_<trail name> 形式です。
次のクエリ文を使用して、STSトークンを使用してクラスターのワーカーRAMロールが実行するAPI操作を取得します。
<worker_role_name>
をクラスターのワーカーRAMロールの名前に置き換えます。* 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ロールの右側にあるハイパーリンクをクリックして、RAMコンソールに移動します。
[ロールの詳細] ページの [権限] タブで、管理するRAMポリシーをクリックします。 [ポリシーコンテンツ] タブで、[ポリシードキュメントの変更] をクリックします。
重要ポリシーを変更する前に、ポリシーをロールバックする必要がある場合に備えて、元のポリシーコンテンツのコピーを作成します。
ビジネス要件とステップ5で生成された分析結果に基づいて、ポリシーから権限を削除します。 たとえば、ポリシーコンテンツの
[操作]
セクションから、分析結果に含まれていないAPI操作を削除できます。 ポリシーコンテンツのすべてのAPI操作が不要であることを確認した場合は、RAMポリシーをワーカーRAMロールからデタッチできます。システムコンポーネントを再デプロイします。 詳細については、「手順2」のredeployコマンドをご参照ください。
ワーカーRAMロールがクラスター内のコンポーネントとアプリケーションに必要な最小限の権限のみを提供するまで、手順4、手順5、および手順6を繰り返します。
関連ドキュメント
ACKの認証システムの詳細については、「認証のベストプラクティス」をご参照ください。