Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Organizations_JAWS_Yokohama
Search
Koheiawa
January 20, 2025
Technology
65
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Organizations_JAWS_Yokohama
Koheiawa
January 20, 2025
More Decks by Koheiawa
See All by Koheiawa
AgentCoreMemory_FinJAWS
koheiawa
1
22
CCoEセミナー_第33回_AWS_reInvent_社内Recap_v0.1.pdf
koheiawa
0
36
AWS VerifiedAccess
koheiawa
1
560
IAMAccessAnalyzer_Security-JAWS
koheiawa
1
1.9k
SecurityHub_FinJAWS
koheiawa
8
1.3k
DirectConnectSiteLink_みのるんさん勉強会
koheiawa
2
4.9k
Other Decks in Technology
See All in Technology
PLaMoを毎日の開発で使い育てていく
pfn
PRO
0
180
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
[MIRU26] Open-Vocabulary Intention-Guided Object Detection in Diverse Scenes
keio_smilab
PRO
0
140
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
3
370
SmartHR Engineering Team Deck
smarthr
0
190
え?フロントエンドエンジニアの ワイがインフラも!?
puku0x
0
260
【CEDEC2026】『Relink』を拡張せよ - 『GRANBLUE FANTASY: Relink - Endless Ragnarok』の開発速度と品質を守るCI運用
cygames
PRO
0
120
Pavlokで始める電撃駆動開発
sgrsn
0
170
トヨタ⽣産⽅式(TPS)⼊⾨
recruitengineers
PRO
1
360
Breaking the Seal: Static Deobfuscation of Compiled V8 JavaScript Bytecode Malware
hshrzd
0
460
つくって納得、つかって実感! 大規模言語モデルことはじめ ver2.0
recruitengineers
PRO
2
620
ウォーターフォール開発案件のPMとしてAI活用を模索している話
hatahata021
3
310
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
520
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
Practical Orchestrator
shlominoach
191
12k
Utilizing Notion as your number one productivity tool
mfonobong
4
500
Statistics for Hackers
jakevdp
799
230k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Amusing Abliteration
ianozsvald
1
240
Into the Great Unknown - MozCon
thekraken
41
2.7k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
420
My Coaching Mixtape
mlcsv
0
190
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Navigating Weather and Climate Data
rabernat
0
440
Transcript
2つのグローバル条件キーで クロスアカウントなクロスサービスアクセスを制御する
2020年に某大手証券グループのシンクタンクに新卒入社。 現在はCCoE担当。 大学生時代を横浜で過ごしたクラウドセキュリティが好きな エンジニア。 CISSP / 2023-24 AWS Top Engineer(Security)
あわ が くぼ 粟ケ窪 康平
おことわり 本資料の内容や見解は所属の組織を代表するものではございません
クロスサービスアクセス とは クロスアカウントなクロスサービスアクセスの制御 AWSではクロスサービスアクセスを設定したい場合がある
クロスサービスアクセス の例 クロスアカウントなクロスサービスアクセスの制御 Amazon Cloud Watch Alarm Amazon SNS Topic
SNSトピックに メッセージを公開 AWSでよくあるクロスサービスアクセスの例 ✓ CloudWatch が SNSトピックにメッセージを公開する ✓ CloudTrail が S3バケットにログデータを書き込む ✓ VPC が Flow logs を S3バケットに書き込む ✓ SNS が SQSキューにメッセージを送信する
クロスサービスアクセス の例 クロスアカウントなクロスサービスアクセスの制御 Amazon Cloud Watch Alarm Amazon SNS Topic
SNSトピックに メッセージを公開 AWSでよくあるクロスサービスアクセスの例 ✓ CloudWatch が SNSトピックにメッセージを公開する ✓ CloudTrail が S3バケットにログデータを書き込む ✓ VPC が Flow logs を S3バケットに書き込む ✓ SNS が SQSキューにメッセージを送信する クロスサービスアクセスの制御は重要
クロスサービスアクセス のセキュリティリスク クロスアカウントなクロスサービスアクセスの制御 Amazon Cloud Watch Alarm Amazon SNS Topic
クロスサービスアクセスではサービスプリンシパルを信頼する "Principal": { "Service": "cloudwatch.amazonaws.com “ } を信頼 SNSトピックに メッセージを公開
クロスサービスアクセス のセキュリティリスク クロスアカウントなクロスサービスアクセスの制御 Amazon Cloud Watch Alarm Amazon SNS Topic
適切な制御がなされていない場合、意図しないアクセスが発生しうる Amazon Cloud Watch Alarm "Principal": { "Service": "cloudwatch.amazonaws.com “ } を信頼 意図しない第三者が メッセージを公開しうる
クロスサービスアクセス のセキュリティリスク クロスアカウントなクロスサービスアクセスの制御 Amazon Cloud Watch Alarm Amazon SNS Topic
適切な制御がなされていない場合、意図しないアクセスが発生しうる Amazon Cloud Watch Alarm 「混乱した代理」 と呼ばれるセキュリティ上の問題 "Principal": { "Service": "cloudwatch.amazonaws.com “ } を信頼 意図しない第三者が メッセージを公開しうる
クロスサービスアクセス のセキュリティリスク クロスアカウントなクロスサービスアクセスの制御 Amazon Cloud Watch Alarm Amazon SNS Topic
適切な制御がなされていない場合、意図しないアクセスが発生しうる Amazon Cloud Watch Alarm 「混乱した代理」 と呼ばれるセキュリティ上の問題 "Principal": { "Service": "cloudwatch.amazonaws.com “ } を信頼 グローバル条件キーで制御が可能 意図しない第三者が メッセージを公開しうる
条件キーとは クロスアカウントなクロスサービスアクセスの制御 リクエストコンテキスト内の特定の要素を指すためのキー ・ユーザ名 ・アクセス日時 ・送信元IPアドレス etc リクエストの際に様々な情報を コンテキストという形で収集 ・aws:username
・aws:CurrentTime ・aws:SourceIp etc コンテキスト内の情報をもとに ポリシーで制御 ポリシー内のCondition(条件)句で使用するので条件キーと呼ぶ
グローバル条件キーとサービス固有の条件キー クロスアカウントなクロスサービスアクセスの制御 条件キーは2種類存在する グローバル条件キー vs サービス固有の条件キー ✓ AWSの全てのサービスで使用できる 汎用的な条件キー ✓
プレフィックスとして「aws:」を使用 ✓ aws:CurrentTime: リクエストの時刻 ✓ aws:SourceIp: リクエスト元のIPアドレス ✓ aws:MultiFactorAuthPresent: 多要素認証の使用有無 ✓ aws:PrincipalTag: IAMプリンシパルに付与されたタグ ✓ 特定のAWSサービスでのみ使用可能な条件 キー ✓ プレフィックスとしてサービス名を使用 ✓ s3:prefix: S3バケット内のオブジェクトのプレフィックス ✓ ec2:InstanceType: EC2インスタンスのタイプ ✓ dynamodb:LeadingKeys: DynamoDBテーブルのパーティションキー
グローバル条件キーとサービス固有の条件キー クロスアカウントなクロスサービスアクセスの制御 条件キーは2種類存在する グローバル条件キー vs サービス固有の条件キー ✓ AWSの全てのサービスで使用できる 汎用的な条件キー ✓
プレフィックスとして「aws:」を使用 ✓ aws:CurrentTime: リクエストの時刻 ✓ aws:SourceIp: リクエスト元のIPアドレス ✓ aws:MultiFactorAuthPresent: 多要素認証の使用有無 ✓ aws:PrincipalTag: IAMプリンシパルに付与されたタグ ✓ 特定のAWSサービスでのみ使用可能な条件 キー ✓ プレフィックスとしてサービス名を使用 ✓ s3:prefix: S3バケット内のオブジェクトのプレフィックス ✓ ec2:InstanceType: EC2インスタンスのタイプ ✓ dynamodb:LeadingKeys: DynamoDBテーブルのパーティションキー 一般的な条件キーはこちら 難しく捉えなくてよい
グローバル条件キーを用いたクロスサービスアクセスの制御 クロスアカウントなクロスサービスアクセスの制御 aws:SourceAccount と aws:SourceArn というグローバル条件キーを使用して制御が可能 Amazon Cloud Watch Alarm
Amazon SNS Topic Amazon Cloud Watch Alarm "Condition": { "StringEquals": { "aws:SourceAccount": "<MY-ACCOUNT-ID>" } } "Condition": { "ArnEquals": { "aws:SourceArn": "<MY-RESOURCE-ARN>" } } or <MY-ACCOUNT-ID> <MY-RESOURCE-ARN>
aws:SourceAccount と aws:SourceArn の課題 クロスアカウントなクロスサービスアクセスの制御 マルチアカウント環境でスケールしない AWSアカウント A AWSアカウント B
AWSアカウント C AWSアカウント D ログ集約アカウント Flow logs Flow logs Flow logs S3バケット Flow logs "Condition": { "StringEquals": { "aws:SourceAccount": [ “AAAAAAAAAAAA“, “BBBBBBBBBBBB“, “CCCCCCCCCCCC“, “DDDDDDDDDDDD“ ] } } S3のリソースポリシー
aws:SourceAccount と aws:SourceArn の課題 クロスアカウントなクロスサービスアクセスの制御 マルチアカウント環境でスケールしない AWSアカウント A AWSアカウント B
AWSアカウント C AWSアカウント D ログ集約アカウント Flow logs Flow logs Flow logs S3バケット Flow logs "Condition": { "StringEquals": { "aws:SourceAccount": [ “AAAAAAAAAAAA“, “BBBBBBBBBBBB“, “CCCCCCCCCCCC“, “DDDDDDDDDDDD“ ] } } S3のリソースポリシー 全ての発信元アカウントを 列挙する必要がある
クロスアカウントなクロスサービスアクセスの制御 クロスアカウントなクロスサービスアクセスの制御 Organizations環境では以下のグローバル条件キーが利用可能 aws:SourceOrgID と aws:SourceOrgPaths ✓ クロスサービスアクセスリクエストを行 うリソースのAWS組織ID ✓
クロスサービスアクセスリクエストを行うリソー スの組織エンティティパス Organizations ID: o-exampleorgid Root ID: r-exampleroot OU ID: ou-1234-exampleou1 OrgID:o-exampleorgid(Organizations IDそのもの) OrgPaths:o-exampleorgid/r-exampleroot/ou-1234-exampleou1
aws:SourceOrgID の使用例 クロスアカウントなクロスサービスアクセスの制御 特定の組織からリクエストが発信された場合のみアクセス可能 Organizations ID: o-exampleorgid Flow logs S3バケット
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessBasedOnSourceOrgID", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::example-bucket/*", "Condition": { "StringEquals": { "aws:SourceOrgID": "o-exampleorgid" } } } ] } S3リソース(バケット)ポリシー
aws:SourceOrgPaths の使用例 クロスアカウントなクロスサービスアクセスの制御 特定の組織エンティティパスからリクエストが発信された場合のみアクセス可能 S3バケット { "Version": "2012-10-17", "Statement": [
{ "Sid": "AllowAccessBasedOnSourceOrgPaths", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::example-bucket/*", "Condition": { "Null": { "aws:SourceOrgPaths": "false" }, "ForAllValues:StringEquals": { "aws:SourceOrgPaths": "o-exampleorgid/r-exampleroot/ou-1234-exampleou1“ } } } ] } S3リソース(バケット)ポリシー Organizations ID: o-exampleorgid Root ID: r-exampleroot OU ID: ou-1234-exampleou1 Flow logs SourceOrgPaths のCondition句は特殊な書き方をする
aws:SourceOrgPaths の使用例 クロスアカウントなクロスサービスアクセスの制御 SourceOrgPathsは複数の値を取る可能性がある多値キー ForAllValues セット演算子は、 値が空集合(Null)の場合 true を返してしまう 組織外からのアクセス
"Condition": { "Null": { "aws:SourceOrgPaths": "false" }, "ForAllValues:StringEquals": { "aws:SourceOrgPaths":"o-exampleorgid/r-exampleroot/ou-1234-exampleou1“ } } Nullチェックを 必ず含める
aws:SourceOrgPaths の使用例 クロスアカウントなクロスサービスアクセスの制御 S3バケット { "Version": "2012-10-17", "Statement": [ {
"Sid": "AllowAccessBasedOnSourceOrgPaths", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::example-bucket/*", "Condition": { "Null": { "aws:SourceOrgPaths": "false" }, "ForAllValues:StringEquals": { "aws:SourceOrgPaths": "o-exampleorgid/r-exampleroot/ou-1234-exampleou1“ } } } ] } S3リソース(バケット)ポリシー Organizations ID: o-exampleorgid Root ID: r-exampleroot OU ID: ou-1234-exampleou1 Flow logs 再掲 特定の組織エンティティパスからリクエストが発信された場合のみアクセス可能
まとめ クロスアカウントなクロスサービスアクセスの制御 クロスアカウントなクロスサービスアクセスの制御に役立つグローバル条件キー aws:SourceOrgID と aws:SourceOrgPaths を紹介させていただきました
参考文献 ➢ https://pages.awscloud.com/rs/112-TZM-766/images/20190129_AWS-BlackBelt_IAM_Part1.pdf ➢ https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_condition-keys.html ➢ https://dev.classmethod.jp/articles/new-iam-condition-keys-sourceorgid-sourceorgpath/ ➢ https://aws.amazon.com/jp/about-aws/whats-new/2023/11/organization-wide-iam-condition-keys-restrict- aws-service-to-service-requests/
クロスアカウントなクロスサービスアクセスの制御
ありがとうございました!