波田野 裕一
2024-07-25
2024-11-30
ハンズオン用のCloudShell環境を構築します。
作業権限条件: 必要な権限
AWS(ルート)アカウント
注釈
自力で適宜手順の読み替えできる場合は、以下の権限のあるIAMユーザでも実施可能です。
AWSCloudShellFullAccess AWSCloudFormationFullAccess IAMFullAccess
AWSCloudShellFullAccess
AWSCloudFormationFullAccess
IAMFullAccess
本作業は、以下の環境で行います。
AWSマネジメントコンソール環境条件
AWSマネジメントコンソール手順については、以下の環境で行います。
AWSマネジメントコンソールでのサポートされるブラウザ
https://aws.amazon.com/jp/premiumsupport/knowledge-center/browsers-management-console/
動作確認は、Firefox(手順作成時点の最新バージョン)で行なっています。
本手順書で構築するAWSリソースの構成は以下の図のようになります。
この手順で構築するAWSリソースと順番は以下の図のようになります。
警告
handson-cli-signin-userを利用するためには、以下を実施する必要があります。
初期パスワードの変更 MFAの設定 (MFAの設定が完了するまで、MFAの設定以外の操作はできません。)
初期パスワードの変更
MFAの設定 (MFAの設定が完了するまで、MFAの設定以外の操作はできません。)
サインイン後、パスワードの変更が要求されます。
サインイン直後にMFAの設定をする必要があります。
MFAの設定後、サインインしなおすと、MFAの設定以外の操作ができるようになります。
複数のタブでAWSマネジメントコンソールを開いている場合、全てのタブについてサインアウトをしてください。
(一部のタブを開いたまま、再サインインした場合、MFA設定フラグがfalseのままになり、次のスイッチロールに失敗する可能性があります。)
この手順においてスイッチロールに失敗する場合、マネジメントコンソールの右上に表示されているリージョンを「禁止されていないリージョン」に切り替えるか、IAMなどのグローバルサービスのダッシュボードに画面を切り替えてください。
(リージョンの表示があるサービスを開いている場合に、OrganizationsのSCP(サービスコントロールポリシー)などで禁止されているリージョンを選択しているときは、スイッチロールに失敗します。)
"handson-cli-ctrl-role"(ロール)にスイッチロールし、ハンズオンに必要なIAMポリシーをインスタンスプロファイル(IAMロール)にアタッチします。
権限制御用IAMロールへのスイッチロール
右上のメニューをクリックします。
"ロールの切り替え"(ボタン)をクリックします。
"Switch Role"(画面)が表示されます。
以下を入力します。
AWS ID(12桁)を入力します。
"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 結果(例): (出力なし)
今回は以下のAWS管理IAMポリシーをアタッチします。
AWSCloudShellFullAccess ReadOnlyAccess
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
(出力なし)
"handson-cli-env-role"(ロール)にスイッチロールし、ハンズオンを実施します。
ハンズオン環境用IAMロールへのスイッチロール
"handson-cli-env/handson-cli-env-role"を入力します。
ハンズオンの実施 (handson-cli-env-role)
ハンズオンを実施します。
aws s3 ls
2022-07-19 22:47:06 cf-templates-94ho6sk5misho-ap-northeast-1
"handson-cli-ctrl-role"(ロール)にスイッチロールし、ハンズオンで使用したIAMポリシーをインスタンスプロファイル(IAMロール)からデタッチします。
ハンズオンで使用した権限のデタッチ
"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 結果(例): (出力なし)
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"になっていることを確認します。
今後の参考にするため、本手順についてご意見・コメントをお願いします。
必須項目はありません。お気軽にご回答ください。
内容が違えばお一人何回回答していただいても問題ありません。
はまりどころや誤字・脱字などの修正のご指摘もお待ちしています。
このアンケートシステムはS3 + Cognitoで構築しています。
CloudShell環境が不要になった場合は破棄を行います。