0
0

More than 3 years have passed since last update.

AWS CLI用のIAMユーザ/ロール設定

Posted at

はじめに

ユーザとロールの分離とMFA設定をやった記録です。プライベートだとゆるみがちだったIAM周りを引き締めます。

やったこと

ロール作成

新規でロールを作成し、AWSのサービスを操作するのに必要十分な権限を付与します。※今回は安直にAdmin

「SwitchRoleAdmin」というロールを作成した上で、下記のポリシーを付与します。

SwitchRoleAdminロールのポリシー(Admin)
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*"
    }
  ]
}

このロールを想定しないユーザから使用されると困るため、特定の条件下でのみ使用できるように設定します。ここではMFA認証済みの特定ユーザのみ許可します。

IAMロール詳細画面の「信頼関係」タブから下記の設定を追加します。

信頼関係の編集(ポリシードキュメント)
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/nanakenashi-cli"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "Bool": {
          "aws:MultiFactorAuthPresent": "true"
        }
      }
    }
  ]
}

ユーザ作成

主な権限はユーザからは分離してロールに持たせるため、そのロール(SwitchRoleAdmin)を委任するための権限だけが必要です。

「nanakenashi-cli」ユーザを作成し、下記のポリシーを付与しました。

nanakenashi-cliユーザのポリシー
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::123456789012:role/SwitchRoleAdmin"
    }
  ]
}

加えて、コンソールで使用するときと同様にMFAデバイスを割り当てておきます。

CLI設定

ユーザ設定

※メインで使用する設定なのでprofileは使用していません

CLIの設定ファイル作成
$ aws configure
AWS Access Key ID [****************HOGE]: 
AWS Secret Access Key [****************hoge]: 
Default region name [ap-northeast-1]: 
Default output format [json]: 

ロール設定

ロールを使用するためのプロファイル設定を ~/.aws/config に追記します。

~/.aws/config
[profile default-admin]
region = ap-northeast-1
output = json
role_arn = arn:aws:iam::123456789012:role/SwitchRoleAdmin
source_profile = default
mfa_serial = arn:aws:iam::123456789012:mfa/nanakenashi-cli

試用

プロファイルの指定を忘れない。

プロファイルの指定
$ export AWS_DEFAULT_PROFILE=default-admin

コマンドを実行してみるとMFAの入力が求められ、認証が済めば実行できます。

検証(使用しているcredentialの確認)
$ aws sts get-caller-identity
Enter MFA code for arn:aws:iam::123456789012:mfa/nanakenashi-cli:
{
    "UserId": "XXXXXXXXXX",
    "Account": "123456789012",
    "Arn": "arn:aws:sts::123456789012:assumed-role/SwitchRoleAdmin/botocore-session-1234567890"
}

MFA認証済みをAssumeRoleの条件にしているため、mfa_serialの記述を消すと実行時にエラーになります。

エラーになった例
$ aws sts get-caller-identity
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::123456789012:user/nanakenashi-cli is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::123456789012:role/SwitchRoleAdmin

むすび

セキュリティ意識は大事。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0