この記事でわかること
▪️AWS Certified Security - Specialty問題にて、以下のポリシーの違いを説明しています。
▫️信頼ポリシー
▫️S3バケットポリシー
▫️セッションポリシー
▫️アクセス許可ポリシー
▪️本試験では上記のポリシー詳細な違いを突いてくる問題が出題されます。
その時、又は業務でポリシーを説明する際に迷わない様にこの記事を書きました。
問題と解答の理解手順の流れ
以下は、この記事で解説する手順です。
手順1_問題文の意図をイメージする(問題の解き方の考え有り)
↓
手順2_重要なキーワードに注目する
↓
手順3_正解の分割解説
↓
手順4_不正解の解説
AWS Certified Security - Specialty問題
企業には、アカウント A とアカウント B の 2 つの AWS アカウントがあります。
アカウント A には、アカウント B の IAM ユーザーが
アカウント A の Amazon S3 バケットに機密文書をアップロードする必要があるときに
想定される IAM ロールがあります。
新しい要件は、ユーザーが多要素認証 (MFA) で認証されている場合にのみ、
そのロールを引き受けることを義務付けています。
セキュリティエンジニアは、最小限のリスクと労力でこの要件を満たすソリューションを
推奨する必要があります。
推奨する最適なソリューションを選択してください。
A(正解)
aws:MultiFactorAuthPresent 条件をロールの信頼ポリシーに追加します。
B
aws:MultiFactorAuthPresent 条件を S3 バケットポリシーに追加します。
C
aws:MultiFactorAuthPresent 条件をセッションポリシーに追加します。
D
aws:MultiFactorAuthPresent 条件をロールのアクセス許可ポリシーに追加します。
手順1_問題文の意図をイメージする
▪️別のAWSアカウントからS3バケットにアクセスさせるとき、
MFAを使ったセキュリティ強化をどう実現するか?
▪️例え話
あなたは本社のセキュリティ担当です。
隣の支社のスタッフ(アカウントBのIAMユーザー)が、
本社(アカウントA)の保管庫(S3バケット)に重要書類を提出する必要があります。
ただし、最近セキュリティを見直した結果、
「セキュリティカード(MFAデバイス)を持っていないスタッフは入室禁止」
というルールを導入したい状況です。
▪️解決方法
ロールの信頼ポリシーに条件を追加することです。
つまり、「このロールはMFAで認証されたユーザーだけが引き受けられる」という
条件(aws:MultiFactorAuthPresent)を追加します。
手順2_重要なキーワードに注目する②
▪️アカウントAにはIAMロールが存在
→ 他のアカウント(アカウントB)から引き受け可能な設定になっています。
▪️MFA認証されたユーザーだけに引き受けを許可する必要がある
→ 信頼性の高いユーザーだけにアクセスを制限する要件が加わっています。
▪️求められるのは最小限のリスクと労力での実装
→ 複雑な構成変更や追加リソースなしで実現できる方法がベストです。
▪️aws:MultiFactorAuthPresent
→ ユーザーがMFA認証を行ったかどうかを確認するための条件キーです。
このキーを使って 信頼ポリシー(AssumeRole時の条件)に追加することで、
MFA認証済みユーザーのみにロール引き受けを許可できます。
手順3_正解の分割解説③
「A:aws:MultiFactorAuthPresent 条件をロールの信頼ポリシーに追加する」
▪️IAMロールを引き受ける権限は信頼ポリシーで制御
→ 他アカウントのユーザーがAssumeRoleできるかどうかを決める設定します。
▪️MFAを条件とするには aws:MultiFactorAuthPresent を使用
→ true を指定することで、MFA認証済みユーザーに限定可能です。
▪️最小の労力で実装できる
→ 既存のロールの信頼ポリシーに条件を追加するだけです。
信頼ポリシーの例
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::アカウントBのアカウントID:root"},
"Action": "sts:AssumeRole",
"Condition": {"Bool": {"aws:MultiFactorAuthPresent": true}}
}
]
}
※補足
Principal: アカウントBのIAMユーザー。
Action: IAMロールを引き受ける操作(sts:AssumeRole)。
Condition: MFAが有効である場合にのみ許可。
手順4_不正解の解説
▪️B:S3バケットポリシーに追加する
→ S3バケットポリシーでは「バケットアクセスの可否」は制御できても、
「ロール引き受けの可否」は制御できないです。
▪️C:セッションポリシーに追加する
→ セッションポリシーでは、ロール引き受け後の権限を制限するもので、
MFA条件をロール引き受け時に適用できません。
▪️D:アクセス許可ポリシーに追加する
→ アクセス許可ポリシー(IAMポリシー)はロール引き受け後に
「何をできるか」を決めるもので、「ロールを引き受けるかどうか」は
信頼ポリシーで決めます。
参考文献
▪️信頼ポリシー参考サイト
▫️参考部分
1. アカウント間の信頼関係の確立にて、「ロール信頼ポリシーを以下に示します。」
▪️S3バケットポリシー参考サイト
▫️参考部分
Amazon S3 バケットポリシーを使用すると、
バケット内のオブジェクトへのアクセスを保護して、
適切な権限を持つユーザーだけがアクセスできるようにすることができます。
▪️セッションポリシー参考サイト
▫️参考部分
アクセス許可は、リソースベースのポリシーから取得することもできます。
これらのポリシーのいずれかで明示的に拒否すると、許可が上書きされます。
▪️アクセス許可ポリシー参考サイト
▫️参考部分
AWS でのアクセスを管理するには、ポリシーを作成し、
IAM アイデンティティ (ユーザー、ユーザーのグループ、ロール) または
AWS リソースにアタッチします。
この記事を書いた理由
これまで以下のAWS資格を取得し、2024年12月から2社目のIT会社に転職成功。
更に「AWS Certified Security - Specialty」を最近取得し、
その内容の復習とアウトプットを兼ねて作成しました。
AWS試験取得を行なっている方に少しでも役立てば幸いです。
既に合格済のAWS資格
2024年04月11日「AWS Certified Cloud Practitioner」
2024年06月27日「AWS Certified Solutions Architect - Associate」
2024年08月13日「AWS Certified Sysops Administrator - Associate」
2024年11月19日「AWS Certified Solutions Architect - Professional」
2025年03月01日「AWS Certified Security - Specialty」

