ハンズオン(簡易版): STS基礎 (Assume Role)

事前作業.1.4. ポリシードキュメントの作成 (STSAssumeRolePolicy)

手順の目的

IAMポリシー"STSAssumeRolePolicy"のポリシードキュメントを作成します。

設定値の指定

手順に必要な設定値を変数に格納をします。

1. ポリシードキュメント名

ポリシードキュメント用ディレクトリ名を指定します。

変数の設定:

DIR_IAM_POLICY_DOC="${HOME}/environment/conf-handson-cli-sts-assume-role"

ディレクトリが存在することを確認し、存在しない場合は作成します。

コマンド:

ls -d ${DIR_IAM_POLICY_DOC} > /dev/null 2>&1 \
  || mkdir -p ${DIR_IAM_POLICY_DOC}

結果(例):

(出力なし)

ポリシードキュメント名を指定します。

変数の設定:

IAM_POLICY_DOC_NAME='STSAssumeRolePolicy'

変数の設定:

FILE_IAM_POLICY_DOC="${DIR_IAM_POLICY_DOC}/${IAM_POLICY_DOC_NAME}.json" \
  && echo ${FILE_IAM_POLICY_DOC}

結果(例):

${HOME}/environment/conf-handson-cli-sts-assume-role/STSAssumeRolePolicy.json

設定値の確認

各変数に正しい設定値が格納されていることを確認します。

変数の確認:

cat << END

  # 1. FILE_IAM_POLICY_DOC:"${HOME}/environment/conf-handson-cli-sts-assume-role/STSAssumeRolePolicy.json"
       FILE_IAM_POLICY_DOC="${FILE_IAM_POLICY_DOC}"

END

各変数について、上の行と下の行の値の内容もしくは形式が同じであることを確認します。 もし異なる場合は、それぞれの手順番号に戻って変数の設定を行います。

処理の実行

ポリシードキュメントの生成

AWS Policy Generator ( https://awspolicygen.s3.amazonaws.com/policygen.html )にブラウザでアクセスします。

Step 1: Select Policy Type

  • 'Select Type of Policy'(プルダウン)からポリシーのタイプを選択します。

    Select Type of Policy

    IAM Policy

Step 2: Add Statement(s)

ポリシーに必要な以下の指定をします。

  • 'AWS Service'(プルダウン)から'AWS Security Token Service'を選択します。

  • 'Actions'(プルダウン)から'AssumeRole'を選択します。

  • 'Amazon Resource Name (ARN)'(テキストボックス)に'*'を入力します。

'Add Statement'(ボタン)をクリックします。

  • ポリシーの概要が追加され、'Generate Policy'(ボタン)がアクティブになります。

ポリシーに必要な以下の指定をします。

  • 'AWS Service'(プルダウン)から'AWS Identity and Access Management (IAM)'を選択します。

  • 'Actions'(プルダウン)から'GetRole'を選択します。

  • 'Actions'(プルダウン)から'ListRoles'を選択します。

  • 'Amazon Resource Name (ARN)'(テキストボックス)に'*'を入力します。

'Add Statement'(ボタン)をクリックします。

Step 3: Generate Policy

  • 'Generate Policy'(ボタン)をクリックします。

    • 'Policy JSON Document'が表示されます。

  • 'Policy JSON Document'上のポリシードキュメントをコピーします。

ポリシードキュメントファイルの作成

ターミナル上でポリシードキュメントファイル作成の準備をします。

コマンド:

cat << EOF > ${FILE_IAM_POLICY_DOC}
  • エンターキーを押します。(ペースト待ちになります。)

  • ペースト待ちのターミナルにポリシードキュメントをペーストします。

  • エンターキーを押します。

  • 行頭に'EOF'と入力し、エンターキーを押します。

ポリシードキュメントの確認

ポリシードキュメントを確認します。

コマンド:

cat ${FILE_IAM_POLICY_DOC}

結果(例):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1688639182004",
      "Action": [
        "sts:AssumeRole"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Sid": "Stmt1688639257273",
      "Action": [
        "iam:GetRole",
        "iam:ListRoles"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

完了確認

本手順の主処理は、以下の完了条件を満たしたときに成功したものとします。

完了条件1: ポリシードキュメント"${HOME}/environment/conf-handson-cli-sts-assume-role/STSAssumeRolePolicy.json"が存在する。

「ポリシードキュメント"${HOME}/environment/conf-handson-cli-sts-assume-role/STSAssumeRolePolicy.json"が存在する。」ことを確認します。

コマンド:

ls ${FILE_IAM_POLICY_DOC}

結果(例):

${HOME}/environment/conf-handson-cli-sts-assume-role/STSAssumeRolePolicy.json

完了条件2: ポリシードキュメント"${HOME}/environment/conf-handson-cli-sts-assume-role/STSAssumeRolePolicy.json"が有効なJSONである。

「ポリシードキュメント"${HOME}/environment/conf-handson-cli-sts-assume-role/STSAssumeRolePolicy.json"が有効なJSONである。」ことを確認します。

コマンド:

cat ${FILE_IAM_POLICY_DOC} \
  |  python3 -m json.tool \
  > /dev/null

結果(例):

(出力なし)

ブラウザ上のAWS Policy Generatorを閉じます。

手順の完了