目的
IAMロールでAWSアカウントを跨いだスイッチロールを行いたいと思い、
今回実際にAWSアカウントを跨いだスイッチロール設定そしてIAMロールのセキュリティ担保のためにいくつか設定を行いましたので記載します。
設定手順
AWSコンソール>IAM>ロール>ロールを作成まで進みます。
「AWSアカウント」を選択すると下記画像のようになるため「別のAWSアカウント」を選択しIAMロールの使用を許可したいAWSアカウントを記載し「次へ」をクリックしてください。
(ちなみに複数のAWSアカウント設定・MFA設定を行うことも可能です)
「許可を追加」画面にて許可ポリシー選択画面に変わりますので、任意のポリシーを選択し「次へ」を選択してください。
「名前、確認、および作成」の画面に変わりますので、任意のIAMロール名・説明やタグを追加し「ロールを作成」をクリックしてください。
上記手順でIAMロールの作成は完了です。
ですが今回は作成したIAMロールに使用制限を設けたいと思います。
使用制限については。IAM>ロール>「上記で作成したIAMロール名」まで移動し「信頼関係」タブにて「信頼ポリシーを編集」をクリックします。
ポリシーが設定可能になりますので下記の通り設定を行いました。
下記設定を行うことで特定のAWSアカウントかつIAMユーザしか上記のIAMロールを使用できなくしました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[AWSアカウントID]:user/[IAMユーザ]"
},
"Action": "sts:AssumeRole"
"Condition": {}
}
]
}
また今回上記手順で作成したIAMロールにadmin権限をアタッチしたため信頼ポリシーだけでは不安でした…
(MFAはつけたくありませんでした…)
そのため上記IAMロールの信頼ポリシーの編集権限を制限するIAMポリシーを作成することでセキュリティを担保しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyTrustPolicyEdit",
"Effect": "Deny",
"Action": [
"iam:UpdateAssumeRolePolicy",
"iam:PutRolePolicy"
],
"Resource": "arn:aws:iam::[AWSアカウントID]:role/[IAMロール]",
"Condition": {
"StringNotLike": {
"aws:PrincipalARN": [
"arn:aws:iam::[AWSアカウントID]:user/[IAMユーザ]",
"arn:aws:iam::[AWSアカウントID]:user/[IAMユーザ]"
]
}
}
}
]
}
実際にスイッチロールを行うさいは下記画面にAWSアカウントIDやIAMロール情報を入力すると思いますが、
一々コピペはめんどくさいです。
そのため今回はChororm拡張機能である「AWS Extend Switch Roles」を使いました。
「AWS Extend Switch Roles」はわかりやすく解説してくれているサイトがいくつもあるため調べてみてください。
最後に
業務や資格勉強で学んだことを備忘録として書いています。