はじめに
ユーザとロールの分離とMFA設定をやった記録です。プライベートだとゆるみがちだったIAM周りを引き締めます。
やったこと
ロール作成
新規でロールを作成し、AWSのサービスを操作するのに必要十分な権限を付与します。※今回は安直にAdmin
「SwitchRoleAdmin」というロールを作成した上で、下記のポリシーを付与します。
{
"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」ユーザを作成し、下記のポリシーを付与しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::123456789012:role/SwitchRoleAdmin"
}
]
}
加えて、コンソールで使用するときと同様にMFAデバイスを割り当てておきます。
CLI設定
ユーザ設定
※メインで使用する設定なのでprofileは使用していません
$ aws configure
AWS Access Key ID [****************HOGE]:
AWS Secret Access Key [****************hoge]:
Default region name [ap-northeast-1]:
Default output format [json]:
ロール設定
ロールを使用するためのプロファイル設定を ~/.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の入力が求められ、認証が済めば実行できます。
$ 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
むすび
セキュリティ意識は大事。