まくろぐ

AWS IAM の設定をコマンドライン (CLI) で行う

更新:
作成:

AWS CLI(aws コマンド)を使うと、様々な IAM 系の操作をコマンドラインから実行できるようになります。 ただし、IAM の制御を行えるのは、AdministratorAccess ポリシーなどが割り当てられ、IAM 操作の権限が付いているユーザーに限られます。

ユーザー関連

ユーザーの一覧を取得する (iam list-users)

例: ユーザーの一覧を取得
$ aws iam list-users --output yaml
Users:
- Arn: arn:aws:iam::123456789012:user/Admin
  CreateDate: '2014-10-16T16:03:09+00:00'
  PasswordLastUsed: '2016-06-03T18:37:29+00:00'
  Path: /
  UserId: AIDA1111111111EXAMPLE
  UserName: Admin
- Arn: arn:aws:iam::123456789012:user/backup/backup-user
  CreateDate: '2019-09-17T19:30:40+00:00'
  Path: /backup/
  UserId: AIDA2222222222EXAMPLE
  UserName: arq-45EFD6D1-CE56-459B-B39F-F9C1F78FBE19
- Arn: arn:aws:iam::123456789012:user/cli-user
  CreateDate: '2019-09-17T19:30:40+00:00'
  Path: /
  UserId: AIDA3333333333EXAMPLE
  UserName: cli-user
例: ユーザー名だけの一覧
$ aws iam list-users --output yaml --query="Users[].UserName"
- UserName1
- UserName2
- UserName3
- ...
例: ユーザー名と作成日、ログイン日の一覧
$ aws iam list-users \
    --query "Users[].[UserName,CreateDate,PasswordLastUsed]"
    --output text
UserName1  2018-08-07T00:22:35+00:00       2021-01-21T04:08:20+00:00
UserName2  2017-08-28T15:51:00+00:00       2020-05-14T02:25:36+00:00

ユーザーの情報を取得する (iam get-user)

$ aws iam get-user --user-name=ユーザー名

グループ関連

グループの一覧を表示する
# すべての情報
$ aws iam list-groups

# グループ名だけを一覧表示
$ aws iam list-groups --query='Groups[].GroupName'
指定したグループの情報と、所属するユーザーの一覧を表示する
$ aws iam get-group --group-name=グループ名
ユーザーが所属するグループを表示する
# すべての情報
$ aws iam list-groups-for-user --user-name=ユーザー名

# ARN のみを一覧表示
$ aws iam list-groups-for-user --user-name=ユーザー名 --query 'Groups[].Arn'
$ aws iam list-groups-for-user --user-name susan --output text --query "Groups[].GroupName"

HRDepartment    Developers      SpreadsheetUsers  LocalAdmins
$ aws iam list-groups-for-user --user-name susan --output text --query "Groups[].[GroupName]"

HRDepartment
Developers
SpreadsheetUsers
LocalAdmins

ポリシー関連

ポリシーの一覧を表示する (iam list-policies)

# すべて表示(大量)
$ aws iam list-policies

# ARN のみを一覧表示
$ aws iam list-policies --query='Policies[].Arn'

# 現在何らかのユーザー、グループ、ロールにアタッチされているポリシー
$ aws iam list-policies --only-attached

ポリシーの情報を取得する (iam get-policy)

例: ARN で指定したポリシーの情報を取得する
$ aws iam get-policy
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Policy:
  Arn: arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
  AttachmentCount: 0
  CreateDate: '2015-04-09T15:03:43+00:00'
  DefaultVersionId: v1
  Description: Provides write permissions to CloudWatch Logs.
  IsAttachable: true
  Path: /service-role/
  PermissionsBoundaryUsageCount: 0
  PolicyId: ANPAJNCQGXC42545SKXIK
  PolicyName: AWSLambdaBasicExecutionRole
  UpdateDate: '2015-04-09T15:03:43+00:00'

ユーザーに割り当てられたポリシーの一覧を表示する (iam list-attached-user-policies)

$ aws iam list-attached-user-policies --user-name ユーザー名

グループに割り当てられたポリシーの一覧を表示する (iam list-attached-group-policies)

$ aws iam list-attached-group-policies --group-name グループ名

ユーザーにポリシーを割り当てる (iam attach-user-policy)

$ aws iam attach-user-policy --user-name ユーザー名 --policy-arn ポリシーARN

ロールにポリシーを割り当てる (iam attach-role-policy)

$ aws iam attach-role-policy --role-name ロール名 --policy-arn ポリシーARN

ロール関連

IAM ロールの一覧を取得する (iam list-roles)

例: すべてのロールを表示
$ aws iam list-roles
例: パスが /service-role/ で始まるロールを表示
$ aws iam list-roles --path /service-role/

IAM ロールを作成する (iam create-role)

例: Lambda 用の実行ロール lambda-ex を作成する
$ aws iam create-role --role-name lambda-ex \
      --assume-role-policy-document file://trust-policy.json

STS: Security Token Service の権限を与えるためのポリシー設定です。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Role:
  Arn: arn:aws:iam::123456789012:role/lambda-ex
  AssumeRolePolicyDocument:
    Statement:
    - Action: sts:AssumeRole
      Effect: Allow
      Principal:
        Service: lambda.amazonaws.com
    Version: '2012-10-17'
  CreateDate: '2021-03-12T07:20:28+00:00'
  Path: /
  RoleId: TA4JSU73BFIAROAVTXAP4
  RoleName: lambda-ex

ロールを作成するときに、--path オプションでパスを設定しておくと、iam list-roles でロールを列挙するときに、パスのプレフィックスで検索できるようになります。

例: パス付きのロールを作成する
$ aws iam create-role --role-name lambda-ex \
      --path /division-abc/product-xyz/ \
      --assume-role-policy-document file://trust-policy.json

IAM ロールを削除する (iam delete-role)

例: lambda-ex という名前のロールを削除する
$ aws iam delete-role --role-name lambda-ex

IAM ロールにタグを設定する (iam tag-role)

例: ロールにタグ (AppName:HelloWorld) を設定する
$ aws iam tag-role --role-name my-role \
      --tags Key=AppName,Value=HelloWorld

複数のタグをまとめて設定したいときは、--tags オプションで、キーと値のペアをスペースで区切って並べます。

--tags Key=key1,Value=value1 Key=key2,Value=value2

IAM ロールからタグを削除する (iam untag-role)

例: ロールからタグ Key1、Key2、Key3 を削除する
$ aws iam untag-role --role-name my-role \
      --tag-keys Key1 Key2 Key3

アクセスキー関連

アクセスキーの一覧を表示する (iam list-access-keys)

# CLI 使用中のユーザーのアクセスキーを表示
$ aws iam list-access-keys

# 指定したユーザーのアクセスキーを表示
$ aws iam list-access-keys --user-name=ユーザー名

アクセスキーを作成する (iam create-access-key)

# CLI 使用中のユーザーのアクセスキーを作成
$ aws iam create-access-key

# 指定したユーザーのアクセスキーを作成
$ aws iam create-access-key --user-name=ユーザー名

アクセスキーを削除する (iam delete-access-key)

# 指定した ID のアクセスキーを削除
$ aws iam delete-access-key --access-key-id=アクセスキーID

# 指定したユーザーのすべてのアクセスキーを削除
$ aws iam delete-access-key --user-name=ユーザー名

関連記事

まくろぐ
サイトマップまくへのメッセージ