SCSアイデンティティとアクセス管理
あるセキュリティエンジニアが以下のシナリオを検証しています。
IAMロールRoleAには以下のポリシーがアタッチされています。
・s3:*(全S3バケットへの全操作を許可)
・dynamodb:*(全DynamoDBテーブルへの全操作を許可)
あるアプリケーションがSTS AssumeRoleでRoleAを引き受ける際、s3:GetObjectのみを許可するインラインセッションポリシーを渡しています。
このセッションで実行できる操作として正しいものはどれですか?
As3:GetObject のみ(ロールのアイデンティティベースポリシーとセッションポリシーの積集合が有効な権限となるため)
✓ 正解
IAMのセッションポリシーはロールのアイデンティティベースポリシーと積集合(AND条件)として評価される。ロールがs3:*とdynamodb:*を許可していても、セッションポリシーがs3:GetObjectのみを許可するため有効な権限はその交差点のs3:GetObjectのみとなる。
Bs3:* と dynamodb:* のフルアクセス(STSセッションはロールポリシーの権限をすべて継承するため、セッションポリシーは無視される)
セッションポリシーはSTSセッション中も常に有効であり無視されることはない。AssumeRole時にセッションポリシーを渡すと権限はロールポリシーとセッションポリシーの積集合に制限されるため、ロールが許可するフルアクセスがそのまま継承されるわけではない。
Cs3:GetObject を含む全S3操作(セッションポリシーはS3にのみ影響し、DynamoDBのフルアクセスは維持される)
セッションポリシーはS3に限らず全サービスに対して積集合として機能するため、「S3にのみ影響してDynamoDBのアクセスは維持される」という解釈は誤りである。dynamodb:*もセッションポリシーで許可されていないため、DynamoDB操作も実行不可となる。
D一切の操作が不可(セッションポリシーをAssumeRole時に渡すと、ロールポリシーの権限はすべて無効化される)
セッションポリシーはロールポリシーの権限をすべて無効化するわけではなく、両ポリシーの積集合内の権限は依然として有効である。ロールとセッションポリシーの両方が許可しているs3:GetObjectは実行可能であるため、一切の操作が不可という解釈は誤りである。
解説
セッションポリシー(Session Policy)をAssumeRole時に渡すと、そのセッションの有効な権限は「ロールのアイデンティティベースポリシー」と「セッションポリシー」の積集合(AND条件)に制限されます。この挙動の重要なポイントは以下の通りです。
①ロールが許可していてもセッションポリシーが許可していなければ実行不可
②セッションポリシーが許可していてもロールが許可していなければ実行不可
③セッションポリシーは権限を「追加」することはできず、「縮小」のためにのみ使用できる
本シナリオでは、ロールはs3:*とdynamodb:*を許可していますが、セッションポリシーはs3:GetObjectのみを許可しているため、有効な権限はs3:GetObjectのみとなります。DynamoDBへのアクセスはセッションポリシーで許可されていないため実行不可です。
選択肢Bはセッションポリシーの影響を考慮しておらず誤り。セッションポリシーを渡した場合は積集合に制限される。
選択肢CはセッションポリシーがS3のみに適用されるという誤った解釈であり、セッションポリシーは全サービスに対して積集合として機能する。
選択肢Dはセッションポリシーの効果を誤って解釈しており、積集合の範囲内(s3:GetObject)の権限は依然として有効である。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでSCSを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →