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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
230
[しろおび夏祭り2026] チャットするAIから、作業するAIへ - 使われ方の変化と、その裏側で起きていること
kk0n
0
1.6k
[MIRU26] Open-Vocabulary Intention-Guided Object Detection in Diverse Scenes
keio_smilab
PRO
0
140
AI エージェント時代のデジタルアイデンティティ
fujie
3
1.4k
NetBoxを利用した作業効率化の試み_NetDevNight4
tnoha
0
460
タクシーアプリ『GO』の実践的データ活用〜位置情報データの収集とStreamlitでの可視化〜
mot_techtalk
2
200
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
190
Webアクセシビリティ入門 2026
recruitengineers
PRO
1
240
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.1k
事業価値と Engineering 2026年度版
recruitengineers
PRO
28
14k
AIが自社のTableauを操作する世界へ:Tableau MCP超入門
tbtykk
0
110
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Code Reviewing Like a Champion
maltzj
528
40k
Between Models and Reality
mayunak
4
380
Scaling GitHub
holman
464
140k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Fireside Chat
paigeccino
42
4k
Producing Creativity
orderedlist
PRO
348
40k
The Invisible Side of Design
smashingmag
301
52k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
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/
クロスアカウントなクロスサービスアクセスの制御
ありがとうございました!