ack-ram-tool は、Container Service for Kubernetes が提供するコマンドラインツールであり、Container Service for Kubernetes クラスターおよび Container Service for Kubernetes の権限管理を支援します。ユーザーが組織を退職した場合や、その権限を変更する必要がある場合、ack-ram-tool を使用して、削除済みユーザーの Container Service for Kubernetes 権限を迅速に削除し、セキュリティリスクを軽減できます。
ステップ 1:ack-ram-tool のインストール
-
お使いの OS およびアーキテクチャに対応した 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 -
(任意)以下のコマンドを実行して、
~/.bash_profileにPATH設定を永続化します:echo 'export PATH=$HOME/bin:$PATH' >> ~/.bash_profile -
以下のコマンドを実行して、インストールを確認します。コマンドの出力にはクライアントのバージョンが表示されます。
ack-ram-tool version
ステップ 2:Alibaba Cloud の認証情報の設定
RAM ユーザー および CloudSSO ユーザー は、以下のいずれかの方法でクラウドリソースへのアクセスに必要な 認証情報 を構成できます。
環境に認証情報関連の環境変数が存在する場合、ack-ram-tool はデフォルトでこれらを使用します。これらの環境変数を無視するには、ack-ram-tool コマンドを実行する際に --ignore-env-credentials フラグを追加できます。 ack-ram-tool がサポートする認証情報関連の環境変数の詳細については、「Credentials」をご参照ください。
RAM ユーザー
ack-ram-tool クライアントは、ローカルに構成された Alibaba Cloud 認証情報 を使用して RAM に対して認証を行います。
アクセス用の 認証情報 の構成方法の詳細については、「Alibaba Cloud CLI」をご参照ください。
CloudSSO ユーザー
CloudSSO ユーザー の場合、CloudSSO が提供する CLI ツール acs-sso を使用してログインし、クラウドリソースへのアクセスに必要な 認証情報 を取得できます。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 で使用されるアクセス 認証情報 には、RAM 権限およびクラスターの RBAC 権限が必要です。
-
以下の権限を RAM ユーザー に付与します。詳細については、「RAM ユーザー権限の管理」をご参照ください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cs:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ram:ListUsers", "ram:ListRoles" ], "Resource": "*" } ] } -
クラスター に対して、RAM ユーザー に RBAC 管理者 権限を付与します。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、承認 をクリックします。
-
権限付与 ページで、RAM User タブをクリックし、対象の RAM ユーザー を検索して、[操作] 列の アクセス権限の管理 をクリックして、Permission Management ページを開きます。
-
ロール権限の追加 をクリックし、対象の クラスター および Namespace を選択し、Permission Management を Admin に設定し、送信 をクリックします。
ステップ 4:RAM ユーザーの RBAC バインディングの照会
ack-ram-tool rbac scan-user-permissions コマンドを実行して、対象の クラスター 内の特定の RAM ユーザー の RBAC バインディングを照会できます。
削除済みユーザーおよびロールのバインディングの照会
以下のコマンドを実行して、クラスター 内の削除済みの RAM ユーザー および RAM ロール の RBAC バインディングを表示します。
ack-ram-tool rbac scan-user-permissions -c <クラスター 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 アカウント |
すべてのユーザーおよびロール
すべてのクラスター
ステップ 5:権限のクリーンアップ
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 ロール の権限をクリーンアップします。
以下のコマンドで使用する <UID> を取得するには、ack-ram-tool rbac scan-user-permissions -c <クラスター ID> コマンドを実行します。
ack-ram-tool rbac cleanup-user-permissions -c <クラスター ID> -u <UID>
期待される出力例:
すべてのクラスターでの権限のクリーンアップ
以下のコマンドを実行して、ご利用の Alibaba Cloud アカウント 内のすべてのクラスターにおいて、特定の RAM ユーザー または RAM ロール の RBAC バインディングをクリーンアップし、その kubeconfig を取り消します。
ack-ram-tool rbac cleanup-user-permissions -c all -u <UID>
期待される出力例:
参考文献
kubeconfig の管理方法については、「kubeconfig ファイルの削除」をご参照ください。