Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Organizations_JAWS_Yokohama
Search
Koheiawa
January 20, 2025
Technology
69
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
27
CCoEセミナー_第33回_AWS_reInvent_社内Recap_v0.1.pdf
koheiawa
0
42
AWS VerifiedAccess
koheiawa
1
580
IAMAccessAnalyzer_Security-JAWS
koheiawa
1
1.9k
SecurityHub_FinJAWS
koheiawa
8
1.3k
DirectConnectSiteLink_みのるんさん勉強会
koheiawa
2
5.2k
Other Decks in Technology
See All in Technology
ビジネス部門からPOを迎えての半年間の進歩と課題
zozotech
PRO
0
150
Microsoft のサポート ライフサイクルを理解する
murachiakira
PRO
0
210
国際カードブランドルール変更に伴うクレジットカード決済取引仕様変更について
k1style
0
240
ポケモン対戦を自動で記録して振り返ろう
fufufukakaka
0
400
日本AIベンチャーレポート2026
kentarofujii
0
240
AI時代、つくる力を自分たちの手に。 ──電通×KAG、アジャイルとAI駆動開発で挑む開発の変革
yuukiyo
3
390
AI秘書と毎日働くのはもう当たり前。開発以外の業務に足りない機能をどう埋める?
minorun365
PRO
2
1.7k
野良MCPサーバーを排除せよ!MCPサーバーのガバナンス
yukiogawa
1
240
[re:Invent2026事前勉強会(有志開催)]続きは、ラスベガスの廊下で / continue-in-the-vegas-hallway
sh_fk2
0
260
正解のない研修に放り出されて / Being thrown into a training program with no right answers
ohnoeight
1
150
フィンテック養成勉強会#68
finengine
0
240
sue445's proposals 2026
sue445
0
150
Featured
See All Featured
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
Crafting Experiences
bethany
1
390
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Google's AI Overviews - The New Search
badams
0
1.6k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
540
Agile that works and the tools we love
rasmusluckow
331
22k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
640
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
590
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/
クロスアカウントなクロスサービスアクセスの制御
ありがとうございました!