すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ACK管理クラスターのワーカーRAMロールの権限を手動で制限する

最終更新日:Oct 31, 2024

ACK管理クラスターのノードセキュリティを確保するために、最小権限の原則に基づいて、クラスターのワーカーRAMロールの権限を手動で制限できます。

前提条件

ステップ1: 権限制限が必要かどうかの確認

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 クラスターの詳細ページで、[基本情報] タブをクリックします。 Worker RAMロールの右側にあるハイパーリンクをクリックして、RAMコンソールに移動します。

  3. [ロールの詳細] ページの [権限] タブで、ポリシーが表示されているかどうかを確認します。

    • ポリシーが表示されない場合は、ワーカーRAMロールの権限を制限する必要はありません。

    • k8sWorkerRolePolicy-db8ad5c7 *** などのポリシーが表示されている場合は、ワーカーRAMロールの権限を制限する必要があります。 この場合、要件と最小権限の原則に基づいて、ワーカーRAMロールの権限を制限することをお勧めします。

ステップ2: システムコンポーネントの更新

ACK管理クラスターの主要なシステムコンポーネントを、必要最小限のバージョンまたは最新バージョンに更新します。 詳細については、「システムコンポーネントの管理」をご参照ください。

重要
  • 複数のコンポーネントを同時に更新しないでください。 代わりに、それらを1つずつ更新します。 コンポーネントの更新を開始する前に、前のコンポーネントが正常に更新されていることを確認してください。

  • コンポーネントを更新する前に、次の表のコンポーネントの注意事項を読んで理解することをお勧めします。

コンポーネントは、ACKコンソールの [アドオン] ページから、またはノードプールを使用してインストールできます。 次の表に、上記の方法でインストールされたコンポーネントを更新する方法を示します。

[アドオン] ページからインストールされたコンポーネント

[アドオン] ページに移動し、次の表の説明に基づいてインストールされているコンポーネントを更新します。 コンポーネントがすでに必要最小限のバージョンまたは最新バージョンの場合は、次の表の対応するコマンドを実行するか、ACKコンソールで [再デプロイ] をクリックして、コンポーネントを再デプロイします。

コンポーネント

最小必要バージョン

再デプロイコマンド

補足

metrics-server

v0.3.9.4-ff225cd-aliyun

kubectl -n kube-system rollout restart deployment/metrics-server

なし

alicloud-monitor-controller

v1.5.5

kubectl -n kube-system rollout restart deployment/alicloud-monitor-controller

なし

logtail-ds

v1.0.29.1-05501-aliyun

kubectl -n kube-system rollout restart daemonset/logtail-ds
kubectl -n kube-system rollout restart deployment/alibaba-log-controller

terway

v1.0.10.333-gfd2b7b8-aliyun

kubectl -n kube-system rollout restart daemonset/terway

  • 有効になっているTerwayモードに対応するTerwayコンポーネントを更新します。 Terwayモードの詳細については、「Terwayの概要」をご参照ください。

  • Terwayが更新されたら、手動でTerwayの設定を変更する必要があります。 詳細については、「Terwayの設定の確認」をご参照ください。

terway-eni

v1.0.10.333-gfd2b7b8-aliyun

kubectl -n kube-system rollout restart daemonset/terway-eni

terway-eniip

v1.0.10.333-gfd2b7b8-aliyun

kubectl -n kube-system rollout restart daemonset/terway-eniip

terway-controlplane

v1.2.1

kubectl -n kube-system rollout restart deployment/terway-controlplane

なし

flexvolume

v1.14.8.109-649dc5a-aliyun

kubectl -n kube-system rollout restart daemonset/flexvolume

FlexVolumeからCSIへのアップグレード

csi-plugin

v1.18.8.45-1c5d2c1-aliyun

kubectl -n kube-system rollout restart daemonset/csi-plugin

なし

csi-provisioner

v1.18.8.45-1c5d2c1-aliyun

kubectl -n kube-system rollout restart deployment/csi-provisioner

なし

storage-operator

v1.18.8.55-e398ce5-aliyun

kubectl -n kube-system rollout restart deployment/storage-auto-expander
kubectl -n kube-system rollout restart deployment/storage-cnfs
kubectl -n kube-system rollout restart deployment/storage-monitor
kubectl -n kube-system rollout restart deployment/storage-snapshot-manager
kubectl -n kube-system rollout restart deployment/storage-operator

なし

alicloud-disk-controller

v1.14.8.51-842f0a81-aliyun

kubectl -n kube-system rollout restart deployment/alicloud-disk-controller

なし

ack-node-problem-detector

1.2.16

kubectl -n kube-system rollout restart deployment/ack-node-problem-detector-eventer

なし

aliyun-acr-credential-helper

v23.02.06.2-74e2172-aliyun

kubectl -n kube-system rollout restart deployment/aliyun-acr-credential-helper

更新を開始する前に、権限を付与する必要があります。

  • カスタムRAM権限を取得したり、Alibaba Cloudアカウント全体でイメージをプルする必要がない場合は、[アドオン] ページに移動し、tokenModeパラメーターをmanagedRoleに設定してコンポーネントの設定を変更します。

  • パスワード不要のイメージプル機能を使用する必要がない場合は、コンポーネントをアンインストールできます。

ack-cost-exporter

1.0.10

kubectl -n kube-system rollout restart deployment/ack-cost-exporter

更新を開始する前に、権限を付与する必要があります。

mse-ingress-controller

1.1.5

kubectl -n mse-ingress-controller rollout restart deployment/ack-mse-ingress-controller

更新を開始する前に、権限を付与する必要があります。

腕-プロメテウス

1.1.11

kubectl -n arms-prom rollout restart deployment/arms-prometheus-ack-arms-prometheus

なし

ack-onepilot

3.0.11

kubectl -n ack-onepilot rollout restart deployment/ack-onepilot-ack-onepilot

更新を開始する前に、権限を付与する必要があります。

ノードプールを使用してインストールされたcluster-autoscaler

コンポーネント

最小必要バージョン

再デプロイコマンド

補足

cluster-autoscaler

v1.3.1-bcf13de9-aliyun

kubectl -n kube-systemロールアウトの再起動デプロイメント /cluster-autoscaler

次の方法を使用して、cluster-autoscalerのバージョンを表示できます。 cluster-autoscalerの更新方法の詳細については、「 [コンポーネントの更新] cluster-autoscalerの更新」をご参照ください。

  • ACKコンソールでcluster-autoscalerのバージョンを表示します。 詳細については、「cluster-autoscalerのバージョンの表示」をご参照ください。

  • 次のコマンドを実行して、cluster-autoscalerのバージョンを表示します。

    kubectl -n kube-system get deployment/cluster-autoscaler -o yaml | grep acs/autoscaler

Terwayの設定を確認する

terway、terway-eni、またはterway-eniipがクラスターにインストールされている場合、kube-system名前空間のeni_conf ConfigMapであるTerwayの設定ファイルを手動で確認する必要があります。

  1. 次のコマンドを実行して、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",
  2. 前の表の対応するコマンドを実行して、Terwayを再デプロイします。

手順3: ActionTrailを使用してクラスターログを収集

ActionTrailを使用してAPI監査ログを収集し、クラスターで実行されたAPI操作を分析します。 これにより、クラスターのワーカーRAMロールにアタッチされたRAMポリシーに依存するアプリケーションを特定できます。 ActionTrailで動作するAlibaba Cloudサービスの詳細については、「ActionTrailで動作するサービス」をご参照ください。

説明

少なくとも1週間以上以内に生成された監査ログを収集することを推奨します。

ActionTrailコンソールに移動し、クラスターが存在するリージョンに単一アカウントのトレイルを作成します。 シングルアカウントトレイルを作成するときは、[Simple Log Serviceへの配信] を選択します。 詳細については、「シングルアカウント証跡の作成」をご参照ください。

ステップ4: クラスターで機能テストを実行する

上記の手順が完了したら、クラスターで機能テストを実行して、クラスターが期待どおりに機能するかどうかを確認します。

テストアイテム

説明

参照

コンピューティング

クラスターがノードを期待どおりにスケールできるかどうか。

ノードプールのスケール

ネットワーク

クラスターが期待どおりにポッドにIPアドレスを割り当てることができるかどうか。

アプリケーションの展開

ストレージ

外部ストレージが有効になっている場合、クラスターが外部ストレージを使用するワークロードを期待どおりにデプロイできるかどうか。

ストレージ-CSI

モニタリング

クラスターが期待どおりにアラートを生成できるかどうか。

観察可能性

拡張性

自動スケーリングが有効になっている場合、クラスターがノードを期待どおりに自動的にスケーリングできるかどうか。

ノードの自動スケーリング

セキュリティ

パスワードフリーのイメージプル機能が有効になっている場合、クラスターが期待どおりに使用できるかどうか。

aliyun-acr-credential-helperコンポーネントを使用して、パスワードなしで画像をプルします

重要

機能テストが完了したら、クラスターにデプロイされたビジネスのロジックを確認して、ビジネスが期待どおりに実行されることを確認します。

ステップ5: ActionTrailによって収集されたログを分析する

  1. にログインします。Simple Log Serviceコンソール.

  2. [プロジェクト] セクションで、管理するプロジェクトをクリックします。

    image

  3. プロジェクトの詳細ページで、[ログストレージ] > [ログストア] を選択し、[ログストア] タブで管理するログストアをクリックします。

    手順3でActionTrailによって収集されたログを保存するために使用するLogstoreの名前は、actiontrail_<trail name> 形式です。

  4. 次のクエリ文を使用して、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ロールの権限を制限する

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 クラスターの詳細ページで、[基本情報] タブをクリックします。 Worker RAMロールの右側にあるハイパーリンクをクリックして、RAMコンソールに移動します。

  3. [ロールの詳細] ページの [権限] タブで、管理するRAMポリシーをクリックします。 [ポリシーコンテンツ] タブで、[ポリシードキュメントの変更] をクリックします。

    重要

    ポリシーを変更する前に、ポリシーをロールバックする必要がある場合に備えて、元のポリシーコンテンツのコピーを作成します。

    ビジネス要件とステップ5で生成された分析結果に基づいて、ポリシーから権限を削除します。 たとえば、ポリシーコンテンツの [操作] セクションから、分析結果に含まれていないAPI操作を削除できます。 ポリシーコンテンツのすべてのAPI操作が不要であることを確認した場合は、RAMポリシーをワーカーRAMロールからデタッチできます。

  4. システムコンポーネントを再デプロイします。 詳細については、「手順2」のredeployコマンドをご参照ください。

  5. ワーカーRAMロールがクラスター内のコンポーネントとアプリケーションに必要な最小限の権限のみを提供するまで、手順4手順5、および手順6を繰り返します。

関連ドキュメント

ACKの認証システムの詳細については、「認証のベストプラクティス」をご参照ください。