AWS SSOのアクセス権限セットの割り当て一覧を確認する方法
AWS SSO を利用しているときに、ユーザーやアクセス権限の棚卸しのためにアクセス権限セットの割り当て一覧を確認したいときがありますが、マネジメントコンソールや AWS CLI では一覧の取得に工夫が必要となります。
AWS SSO の管理を容易にするツールである benkehoe/aws-sso-util を利用することで、簡単に csv 形式のユーザー/グループ、アクセス権限セット、AWS アカウントの紐付けを出力できるため紹介します。
aws-sso-util
については次のブログで詳しく紹介されています。
AWS CloudShell で試してみる
AWS CloudShell により aws-sso-util
を用いたアクセス権限の一覧の出力を試してみます。
aws-sso-util のインストール
aws-sso-util
は Python で動作します。
$ python3 --version Python 3.7.10
README.md に従ってまずは pipx
をインストールします。
$ python3 -m pip install --user pipx
aws-sso-util
をインストールします。
$ pipx install aws-sso-util
インストール後にバージョンを確認してみます。
$ aws-sso-util --version 4.27.0
ヘルプは下記コマンドで確認できます。
$ aws-sso-util --help Usage: aws-sso-util [OPTIONS] COMMAND [ARGS]... Options: --version Show the version and exit. --help Show this message and exit. Commands: admin Commands for AWS SSO administration. check Debug AWS SSO configuration and access. configure Commands to set up ~/.aws/config. console Commands for launching the AWS console in a browser. login Log in to an AWS SSO instance. logout Log out of all AWS SSO sessions roles List your available accounts and roles. run-as Run a command as a specific account + role.
アクセス権限セットの割り当て一覧を確認
アクセス権限セットの割り当て一覧を csv 形式で出力するためには下記コマンドを実行するのみです。
$ aws-sso-util admin assignments instance_arn,principal_type,principal_id,principal_name,permission_set_arn,permission_set_name,target_type,target_id,target_name arn:aws:sso:::instance/ssoins-7898fc71aexample,GROUP,xxxxxxxxxx-5b6544cb-ca08-4e35-a107-316b7b783cae,test-group-readonly,arn:aws:sso:::permissionSet/ssoins-7898fc71aexample/ps-d911a866f7e86d84,ReadOnlyAccess,AWS_ACCOUNT,111122223333 ,Management arn:aws:sso:::instance/ssoins-7898fc71aexample,GROUP,xxxxxxxxxx-88659ec8-9fe8-436e-8c0b-e17280e0a634,test-group-admin,arn:aws:sso:::permissionSet/ssoins-7898fc71aexample/ps-d911a866f7e86d84,ReadOnlyAccess,AWS_ACCOUNT,111122223333 ,Management arn:aws:sso:::instance/ssoins-7898fc71aexample,GROUP,xxxxxxxxxx-88659ec8-9fe8-436e-8c0b-e17280e0a634,test-group-admin,arn:aws:sso:::permissionSet/ssoins-7898fc71aexample/ps-713d6e69c9e1ce28,AdministratorAccess,AWS_ACCOUNT,111122223333 ,Management arn:aws:sso:::instance/ssoins-7898fc71aexample,GROUP,xxxxxxxxxx-88659ec8-9fe8-436e-8c0b-e17280e0a634,test-group-admin,arn:aws:sso:::permissionSet/ssoins-7898fc71aexample/ps-d911a866f7e86d84,ReadOnlyAccess,AWS_ACCOUNT,444455556666 ,Log Archive arn:aws:sso:::instance/ssoins-7898fc71aexample,GROUP,xxxxxxxxxx-88659ec8-9fe8-436e-8c0b-e17280e0a634,test-group-admin,arn:aws:sso:::permissionSet/ssoins-7898fc71aexample/ps-713d6e69c9e1ce28,AdministratorAccess,AWS_ACCOUNT,444455556666 ,Log Archive arn:aws:sso:::instance/ssoins-7898fc71aexample,USER,xxxxxxxxxx-353740ae-807e-496c-847e-019459f11519,test-readonly1@example.net,arn:aws:sso:::permissionSet/ssoins-7898fc71aexample/ps-713d6e69c9e1ce28,AdministratorAccess,AWS_ACCOUNT,444455556666 ,Log Archive arn:aws:sso:::instance/ssoins-7898fc71aexample,GROUP,xxxxxxxxxx-88659ec8-9fe8-436e-8c0b-e17280e0a634,test-group-admin,arn:aws:sso:::permissionSet/ssoins-7898fc71aexample/ps-713d6e69c9e1ce28,AdministratorAccess,AWS_ACCOUNT,777788889999 ,Audit
以上で終了です。簡単ですね!
各項目の概要は下表となります。
項目名 | 概要 |
---|---|
instance_arn | AWS SSO インスタンスの ARN |
principal_type | プリンシパルのタイプ(USER, GROUP など) |
principal_id | プリンシパルのID(ユーザー、グループのID) |
principal_name | プリンシパルの名前(ユーザー、グループの名前) |
permission_set_arn | アクセス権限セットのARN |
permission_set_name | アクセス権限セットの名前 |
target_type | ターゲットのタイプ(AWS_ACCOUNT など) |
target_id | ターゲットのID(AWS_ACCOUNT の場合は AWS アカウント ID) |
target_name | ターゲットの名前(AWS_ACCOUNT の場合は AWS アカウント名) |
csv ファイルとして出力したい場合はリダイレクトし、その後 AWS CloudShell から csv ファイルをダウンロードします。
$ aws-sso-util admin assignments > sso.csv $ ls | grep sso.csv sso.csv
出力された csv ファイルを Excel で開くと下記のイメージです。 ユーザー/グループ、アクセス権限セット、AWS アカウントの紐付けが確認できます。
ローカル環境で実行する場合
aws-sso-util
のインストール方法と csv ファイル出力方法は同様ですが、認証情報の設定方法がいくつかあります。
まず、AWS SSO ユーザーポータルから一時的なアクセスキーを利用できます。
他の方法として、.aws/credentials
に profile を追加する方法があります。
[profile my-sso-profile] sso_start_url = https://example.awsapps.com/start sso_region = ap-northeast-1 sso_account_id = 111122223333 sso_role_name = AdministratorAccess region = ap-northeast-1
profile 追加後に下記コマンドを実行することで、ブラウザが起動してサインイン画面が表示されるため Request を許可(Allow)します。
$ aws-sso-util login
まとめ
AWS SSO のアクセス権限の棚卸しをする際に便利なツールである benkehoe/aws-sso-util を紹介しました。AWS CLI を利用することでもアクセス権限セットの割り当てを確認できますが、一発では出力できないため、これまでは自作のスクリプトを利用していました。今後は楽をできそうです。
aws-sso-util
には他にも機能がありますので、試してみたくなりますね。