スイッチロール用の IAM ロールを簡単に作りたい!!

スイッチロール用の IAM ロールを簡単に作りたい!!

CloudFormation テンプレートを使ってスイッチロール用の IAM ロール作成を効率化する
Clock Icon2023.02.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

マネジメントコンソールを手動で操作し、スイッチロール用の IAM ロールを作成する手順はこちらに紹介されています。

スイッチ用のIAMロール作成手順

これを、 CloudFormation を用いて半自動化するのがこの記事の目的です。とはいえ、用意したテンプレートを使っていただくだけなので CloudFormation について学習する必要はありません。この記事のみでいくらかの効率化が可能です。

下準備

次のものを準備してください。

  1. 作成する IAM ロールを使用される方の情報
    • 名字
    • お名前
    • 所属組織名
  2. スイッチロール元の IAM ユーザーがある AWS アカウントの ID
  3. 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&param_IAMUserName=<organization name>-<family name>.<given name>&param_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 の画面で確認してください。

以上で完了です。 多分これが一番楽だと思います。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.