マネジメントコンソールを手動で操作し、スイッチロール用の IAM ロールを作成する手順はこちらに紹介されています。
これを、 CloudFormation を用いて半自動化するのがこの記事の目的です。とはいえ、用意したテンプレートを使っていただくだけなので CloudFormation について学習する必要はありません。この記事のみでいくらかの効率化が可能です。
下準備
次のものを準備してください。
- 作成する IAM ロールを使用される方の情報
- 名字
- お名前
- 所属組織名
- スイッチロール元の IAM ユーザーがある AWS アカウントの ID
- IAM ロールを作成したい AWS アカウント上での IAM ロール作成権限
CloudFormation を呼び出すための URL を作る
CloudFormation テンプレート
CloudFormation ではテンプレートを用いて定形作業を効率化できます。
今回使用するテンプレートはこちらです。
https://utility-for-aws-operation.s3-ap-northeast-1.amazonaws.com/create-iam-role.json
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "Template for Creating IAM Role to Switch",
"Parameters" : {
"TrustedAWSAccountId" : {
"AllowedPattern" : "^[0-9]*$",
"Type" : "String",
"Default" : "",
"Description" : "Trusted AWS Account ID"
},
"IAMUserName": {
"AllowedPattern" : "^[a-z._-]*$",
"Type": "String",
"Default": "xxx.xxx",
"Description": "IAM Role Name"
}
},
"Resources" : {
"IAMRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": { "Fn::Join" : [ "", [ "arn:aws:iam::", { "Ref" : "TrustedAWSAccountId" }, ":user/", { "Ref" : "IAMUserName" } ] ] }
},
"Action": [
"sts:AssumeRole"
],
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
}
}
]
},
"ManagedPolicyArns": [
"arn:aws:iam::aws:policy/PowerUserAccess"
],
"Path": "/",
"RoleName": { "Ref" : "IAMUserName" }
}
}
},
"Outputs" : {
"IAMRoleArn": {
"Value": { "Fn::GetAtt" : [ "IAMRole", "Arn" ] }
},
"LinkForSwitchRole": {
"Value": { "Fn::Join": [ "", [ "https://signin.aws.amazon.com/switchrole?roleName=", { "Ref" : "IAMUserName" }, "&account=", { "Ref" : "AWS::AccountId" } ] ] }
}
}
}
ご覧の通り、作成される IAM ロールは PowerUserAccess
権限を持ちます。
権限を変更したい場合は上記テンプレートを変更後、ご自身が作成された S3 バケットにアップロードしてお使いください。
これを使用するために、次の URL を用います。
https://ap-northeast-1.console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks/create/review?templateURL=https://utility-for-aws-operation.s3-ap-northeast-1.amazonaws.com/create-iam-role.json&stackName=<organization name>-<family name>-<given name>-iamRole¶m_IAMUserName=<organization name>-<family name>.<given name>¶m_TrustedAWSAccountId=<aws account id>
URL の書き換え
👆の URL は 4 つ、書き換えるところがあります。
プレースホルダー名 | 説明 | 例 |
---|---|---|
<organization name> |
所属組織名 | classmethod |
<family name> |
名字 | takagi |
<given name> |
お名前 | kensuke |
<aws account id> |
スイッチロール元の AWS アカウント ID | 123456789012 |
準備した情報にあわせて書き換えてください。
作成した URL をブラウザーで開く
書き換えた URL をブラウザーで開きましょう。次のような画面が出てきます。
CloudFormation スタックを作成する
入力値に間違いがなければ次の承認にチェックをいれます。
右下のボタンを押してスタックを作成しましょう。
作成された IAM ロールを確認する
次のような表示になったら作成が完了しています。
意図通りの IAM ロールが作成できたかどうか、 AWS IAM の画面で確認してください。
以上で完了です。 多分これが一番楽だと思います。