ハンズオン(簡易版): CLIハンズオン環境

ハンズオン(簡易版): CLIハンズオン環境 (IAMユーザ + CloudShell: コマンドライン版)

作成者:

波田野 裕一

公開日:

2024-08-29

更新日:

2024-11-30

目的

ハンズオン用のCloudShell環境を構築します。

前提

作業権限条件

作業権限条件: 必要な権限

  • AWS(ルート)アカウント

    注釈

    自力で適宜手順の読み替えできる場合は、以下の権限のあるIAMユーザでも実施可能です。

    • AWSCloudShellFullAccess

    • IAMFullAccess

作業環境条件

本作業は、以下の環境で行います。

AWSマネジメントコンソール環境条件

AWSマネジメントコンソール手順については、以下の環境で行います。

構成

本手順書で構築するAWSリソースの構成は以下の図のようになります。

1. CloudShell環境の構築 (ルートユーザー)

注釈

本手順は、AWSルートユーザーでの作業を前提としています。

自力で適宜手順の読み替えできる場合は、以下の権限全てがあるIAMユーザでも実施可能です。

  • AWSCloudShellFullAccess

  • IAMFullAccess

1.0. AWSルートユーザーでのサインイン

1.1. CloudShell用環境の作成

1.1.1. サインイン用IAMユーザーの作成

1.1.2. ハンズオン環境用IAMロールの作成

1.1.3. 権限制御用IAMロールの作成

1.2. IAMユーザー用サインインURLの確認

  • "このアカウントの IAM ユーザーのサインイン URL "のURLを確認します。

    形式:

    https://<AWSアカウントID>もしくは<ユニーク文字列>.signin.aws.amazon.com/console

警告

IAMユーザでサインインする場合、このURLで認証する必要があります。

ブックマークもしくはメモしておきましょう。

1.3. AWSルートユーザーからのサインアウト

2. CloudShell環境の構築 (IAMユーザー)

警告

handson-cli-signin-userを利用するためには、以下を実施する必要があります。

  • 初期パスワードの変更

  • MFAの設定 (MFAの設定が完了するまで、MFAの設定以外の操作はできません。)

2.0. サインイン用ユーザーでのサインイン

注釈

サインイン後、パスワードの変更が要求されます。

2.1. MFAの設定

注釈

サインイン直後にMFAの設定をする必要があります。

2.2. サインイン用ユーザーのサインアウト

注釈

MFAの設定後、サインインしなおすと、MFAの設定以外の操作ができるようになります。

警告

複数のタブでAWSマネジメントコンソールを開いている場合、全てのタブについてサインアウトをしてください。

(一部のタブを開いたまま、再サインインした場合、MFA設定フラグがfalseのままになり、次のスイッチロールに失敗する可能性があります。)

3. CloudShell環境の利用

3.0. サインイン用ユーザーのサインイン

警告

プライベートモードでサインインしている場合、リージョンが利用できるリージョンになっているか確認してください。

(SCPなどで禁止されているリージョンを選択している場合、スイッチロールに失敗します。)

3.1. ハンズオンの事前作業

"handson-cli-ctrl-role"(ロール)にスイッチロールし、ハンズオンに必要なIAMポリシーをインスタンスプロファイル(IAMロール)にアタッチします。

権限制御用IAMロールへのスイッチロール

  • 右上のメニューをクリックします。

  • "ロールの切り替え"(ボタン)をクリックします。

    • "Switch Role"(画面)が表示されます。

  • 以下を入力します。

    Account ID

    AWS ID(12桁)を入力します。

    IAM role name

    "handson-cli-env/handson-cli-ctrl-role"を入力します。

  • "Switch Role"(ボタン)をクリックします。

    • 右上の表示が"handson-cli-env/handson-cloushell-user@XXXXXXXXXXXX"になっていることを確認します。

ハンズオンに必要な権限のアタッチ

ハンズオンに必要なIAMポリシーをインスタンスプロファイル(IAMロール)にアタッチします。

注釈

今回は以下のAWS管理IAMポリシーをアタッチします。

  • AWSCloudShellFullAccess

  • ReadOnlyAccess

コマンド:

ARRAY_IAM_POLICY_NAMES='AWSCloudShellFullAccess ReadOnlyAccess'

コマンド:

array_iam_policy_arns=$(
  echo $( \
    for i in $(echo "${ARRAY_IAM_POLICY_NAMES}");do
      aws iam list-policies \
        --query "Policies[?PolicyName == \`${i}\`].Arn" \
        --output text
    done \
  ) \
) \
  && echo "${array_iam_policy_arns}"

結果(例):

arn:aws:iam::aws:policy/AWSCloudShellFullAccess arn:aws:iam::aws:policy/ReadOnlyAccess

コマンド:

for i in $(echo "${array_iam_policy_arns}");do
  aws iam attach-role-policy \
    --role-name handson-cli-env-role \
    --policy-arn ${i}
done

結果(例):

(出力なし)

3.2. (参考) CloudShellハンズオンの実施

"handson-cli-env-role"(ロール)にスイッチロールし、ハンズオンを実施します。

ハンズオン環境用IAMロールへのスイッチロール

  • 右上のメニューをクリックします。

  • "ロールの切り替え"(ボタン)をクリックします。

    • "Switch Role"(画面)が表示されます。

  • 以下を入力します。

    Account ID

    AWS ID(12桁)を入力します。

    IAM role name

    "handson-cli-env/handson-cli-env-role"を入力します。

  • "Switch Role"(ボタン)をクリックします。

    • 右上の表示が"handson-cli-env/handson-cloushell-user@XXXXXXXXXXXX"になっていることを確認します。

ハンズオンの実施 (handson-cli-env-role)

"handson-cli-env-role"(ロール)にスイッチロールし、ハンズオンを実施します。

注釈

  • ハンズオンを実施します。

    コマンド:

    aws s3 ls
    

    結果(例):

    2022-07-19 22:47:06 cf-templates-94ho6sk5misho-ap-northeast-1
    

3.3. ハンズオンの事後作業

"handson-cli-ctrl-role"(ロール)にスイッチロールし、ハンズオンで使用したIAMポリシーをインスタンスプロファイル(IAMロール)からデタッチします。

権限制御用IAMロールへのスイッチロール

  • 右上のメニューをクリックします。

  • "ロールの切り替え"(ボタン)をクリックします。

    • "Switch Role"(画面)が表示されます。

  • 以下を入力します。

    Account ID

    AWS ID(12桁)を入力します。

    IAM role name

    "handson-cli-env/handson-cli-ctrl-role"を入力します。

  • "Switch Role"(ボタン)をクリックします。

    • 右上の表示が"handson-cli-env/handson-cloushell-user@XXXXXXXXXXXX"になっていることを確認します。

ハンズオンで使用した権限のデタッチ

"handson-cli-ctrl-role"(ロール)にスイッチロールし、"ハンズオン開始前"にアタッチしたIAMポリシーをインスタンスプロファイル(IAMロール)からデタッチします。

コマンド:

ARRAY_IAM_POLICY_NAMES='AWSCloudShellFullAccess ReadOnlyAccess'

コマンド:

array_iam_policy_arns=$(
  echo $( \
    for i in $(echo "${ARRAY_IAM_POLICY_NAMES}");do
      aws iam list-policies \
        --query "Policies[?PolicyName == \`${i}\`].Arn" \
        --output text
    done \
  ) \
) \
  && echo "${array_iam_policy_arns}"

結果(例):

arn:aws:iam::aws:policy/AWSCloudShellFullAccess arn:aws:iam::aws:policy/ReadOnlyAccess

コマンド:

for i in $(echo "${array_iam_policy_arns}");do
  aws iam detach-role-policy \
    --role-name handson-cli-env-role \
    --policy-arn ${i}
done

結果(例):

(出力なし)

サインイン用ユーザーへのスイッチバック

  • AWSマネジメントコンソールのメニューバー右上のIAMユーザー名をクリックします。

    • プルダウンメニューが表示されます。

  • プルダウンメニューの"サインアウト"(ボタン)をクリックします。

    • サインアウトが実行されます。

  • 右上のメニューをクリックします。

  • "スイッチバック"(ボタン)をクリックします。

    • 右上の表示が"handson-cli-signin-user@XXXX-XXXX-XXXX"になっていることを確認します。

3.4. サインイン用ユーザーのサインアウト

アンケート

今後の参考にするため、本手順についてご意見・コメントをお願いします。

注釈

  • 必須項目はありません。お気軽にご回答ください。

  • 内容が違えばお一人何回回答していただいても問題ありません。

  • はまりどころや誤字・脱字などの修正のご指摘もお待ちしています。

注釈

このアンケートシステムはS3 + Cognitoで構築しています。

クリーンアップ. CloudShell環境の破棄

CloudShell環境が不要になった場合は破棄を行います。

注釈

本手順は、AWSアカウント(root)での作業を前提としています。

自力で適宜手順の読み替えできる場合は、以下の権限のあるIAMユーザでも実施可能です>。

  • AWSCloudShellFullAccess

  • IAMFullAccess

0. AWSルートユーザーでのサインイン

1. MFAの無効化・削除

2. CloudShell用環境の削除

2.1. 権限制御用IAMロールの削除

2.2. ハンズオン環境用IAMロールの削除

2.3. サインイン用IAMユーザーの削除

3. AWSルートユーザーからのサインアウト