ack-ram-tool は、Container Service for Kubernetes が提供するコマンドラインインターフェイス (CLI) であり、クラスターの Resource Access Management (RAM) および Role-Based Access Control (RBAC) 権限を管理するのに役立ちます。組織からユーザーが退職したり、権限が変更されたりした場合、ack-ram-tool を使用してクラスター内の削除済みユーザーの権限を迅速に消去し、セキュリティリスクを防止してください。
手順 1:ack-ram-tool のインストール
ご利用の環境のアーキテクチャに合わせて、ack-ram-tool クライアントをダウンロードしてください。
次のコマンドを実行して、クライアントプログラムに実行権限を付与します。
chmod +x ./ack-ram-tool次のコマンドを実行して、ack-ram-tool ファイルをシステムの PATH に含まれるディレクトリにコピーします。
mkdir -p $HOME/bin && cp ./ack-ram-tool $HOME/bin/ack-ram-tool && export PATH=$HOME/bin:$PATH(オプション)次のコマンドを実行して、
$HOME/binの PATH 設定を永続化します。echo 'export PATH=$HOME/bin:$PATH' >> ~/.bash_profile次のコマンドを実行してクライアントのバージョンを確認します。バージョン番号が返された場合は、ack-ram-tool クライアントが正常にインストールされています。
ack-ram-tool version
手順 2:Alibaba Cloud 認証情報の構成
Alibaba Cloud RAM ユーザーおよび SSO ユーザーは、以下の方法でクラウドリソースへのアクセス認証情報を構成・取得できます。
現在の環境にアクセス認証情報に関連する環境変数がある場合、ack-ram-tool はそれらの変数で設定された認証情報を優先します。 ack-ram-tool コマンドの実行時に --ignore-env-credentials パラメーターを追加することで、それらを無視できます。 ack-ram-tool がサポートする認証情報関連の環境変数の詳細については、「認証情報」をご参照ください。
RAM ユーザー
ack-ram-tool クライアントは、RAM への身分認証のために、ローカルに構成された Alibaba Cloud キー認証情報に依存します。
アクセス認証情報の構成方法の詳細については、「Alibaba Cloud CLI」をご参照ください。
SSO ユーザー
Alibaba Cloud SSO ユーザーは、CloudSSO サービスが提供する acs-sso コマンドラインインターフェイス (CLI) ツールを使用してログインし、クラウドリソースへのアクセス認証情報を取得できます。acs-sso の詳細については、「CLI を使用して CloudSSO にログインし、Alibaba Cloud リソースにアクセスする」をご参照ください。Alibaba Cloud CLI ツールは外部モードをサポートしており、これにより外部コマンドラインツールを実行して動的にリソース認証情報を取得できます。次のコマンドを実行して CloudSSO にログインし、ローカルマシンに自動的に認証情報を構成します。
aliyun configure --mode External --profile sso
Configuring profile 'sso' in 'External' authenticate mode...
Process Command [acs-sso login --profile sso]:
Default Region Id [cn-shanghai]:
Default Output Format [json]: json (Only support json)
Default Language [zh|en] en:
Saving profile[sso] ...Done.
Configure Done!!!
..............888888888888888888888 ........=8888888888888888888D=..............
...........88888888888888888888888 ..........D8888888888888888888888I...........
.........,8888888888888ZI: ...........................=Z88D8888888888D..........
.........+88888888 ..........................................88888888D..........
.........+88888888 .......Welcome to use Alibaba Cloud.......O8888888D..........
.........+88888888 ............. ************* ..............O8888888D..........
.........+88888888 .... Command Line Interface(Reloaded) ....O8888888D..........
.........+88888888...........................................88888888D..........
..........D888888888888DO+. ..........................?ND888888888888D..........
...........O8888888888888888888888...........D8888888888888888888888=...........
............ .:D8888888888888888888.........78888888888888888888O ..............手順 3:ack-ram-tool のアクセス認証情報に必要な権限を構成する
ack-ram-tool で使用するアクセス認証情報には、RAM 権限およびクラスターの RBAC 権限が必要です。
次の権限を RAM ユーザーに付与します。詳細については、「RAM ユーザーの権限を管理する」をご参照ください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cs:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ram:ListUsers", "ram:ListRoles" ], "Resource": "*" } ] }RAM ユーザーにクラスターの RBAC 管理者権限を付与します。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[権限管理] を選択します。
「承認」ページで、[RAM ユーザー] タブをクリックします。追加する RAM ユーザーを見つけ、右側の列にある[権限の管理]をクリックして、[権限管理] ページに移動します。
[権限の追加] をクリックします。[クラスター] と [名前空間] を選択します。[権限管理] を [管理者] に設定し、[権限の送信] をクリックします。
手順 4:クラスター内の指定 RAM ユーザーの RBAC バインディングをクエリする
ack-ram-tool rbac scan-user-permissions コマンドを実行すると、対象クラスター内の指定 RAM ユーザーの RBAC バインディング情報をクエリできます。
削除済み RAM ユーザーおよびロールの RBAC バインディングのみをクエリする
次のコマンドを実行して、クラスター内の削除済み RAM ユーザーおよびロールの RBAC バインディング情報を表示します。
ack-ram-tool rbac scan-user-permissions -c <cluster_ID>期待される出力:
2023-12-12T15:34:37+08:00 INFO start to scan users and bindings for cluster c401890df511a4362bf24bece4da****
2023-12-12T15:34:43+08:00 WARN by default, only deleted users are included. Use the --all-users flag to include all users
UID UserType UserName Binding
30086537005566**** (deleted) RamRole ClusterRoleBinding/-/30086537005566****-clusterrolebinding
24320678733226**** (deleted) RamUser ClusterRoleBinding/-/24320678733226****-clusterrolebinding
次の表は、UserType パラメーターの内容を示しています。
UserType の値 | 説明 |
RamRole | RAM ロール |
RamUser | RAM ユーザー |
Root | Alibaba Cloud アカウント |
すべての RAM ユーザーおよびロールの RBAC バインディングをクエリする
現在の Alibaba Cloud アカウント配下のすべてのクラスターの RBAC バインディングをクエリする
手順 5:指定 RAM ユーザーまたは RAM ロールの RBAC バインディングを消去し、kubeconfig 権限をパージする
ack-ram-tool rbac cleanup-user-permissions コマンドを実行すると、対象クラスター内の指定 RAM ユーザーまたは RAM ロールの RBAC バインディングを消去し、そのユーザーの kubeconfig をパージできます。
ログに
this user has been active in the past 7 daysというメッセージが含まれている場合、対象の RAM ユーザーまたは RAM ロールは過去 7 日以内にクラスターへのアクセス記録があります。操作には十分ご注意ください。消去操作の前に、ack-ram-tool は削除対象のバインディングの元の JSON ファイルを、現在のディレクトリ内にクラスター ID で命名されたフォルダにバックアップします。
単一クラスター内の RAM ユーザーまたは RAM ロールの権限を消去する
次のコマンドを実行して、単一クラスター内の指定 RAM ユーザーまたは RAM ロールの権限を消去します。
次のコマンド中の <UID> を取得するには、ack-ram-tool rbac scan-user-permissions -c <cluster_ID> コマンドを実行してください。
ack-ram-tool rbac cleanup-user-permissions -c <cluster_ID> -u <UID>期待される出力:
すべてのクラスターにおける RAM ユーザーまたは RAM ロールの権限を消去する
次のコマンドを実行して、現在の Alibaba Cloud アカウント配下のすべてのクラスターにおいて、指定 RAM ユーザーまたはロールの RBAC バインディングを消去し、その kubeconfig をパージします。
ack-ram-tool rbac cleanup-user-permissions -c all -u <UID>期待される出力:
参照情報
kubeconfig の管理方法の詳細については、「kubeconfig のパージ」をご参照ください。