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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
570
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
【データ横丁主催】AI エージェント時代のTranslytical Data Platform
shisyu_gaku
0
230
freeeにおける AI を用いた ブラウザ動作確認の自動化の取り組み
freee
PRO
0
140
アカウント統制の健康診断
kenichinakamura
1
130
AI駆動開発におけるハーネスエンジニアリングの勘所
tsukuboshi
1
520
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
500
Temporal 最高!でも改めて「日付」について調べたら人類の負債すぎる件
riyaamemiya
0
220
Claude for Google Workspaces ポン出し/claude-for-google-workspace-slide-conversion
emiki
0
230
Metadata - Section 2: Simple Metadata & Meta Tags
mohab1
0
120
ウォンテッドリーの最近のプロダクトと技術の紹介
stomk
0
330
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
200
freeeにおけるSoftware Factory
freee
PRO
0
300
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
230
Featured
See All Featured
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
540
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
360
How STYLIGHT went responsive
nonsquared
100
6.3k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
560
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
630
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
The Cost Of JavaScript in 2023
addyosmani
55
10k
Marketing to machines
jonoalderson
1
5.9k
Mobile First: as difficult as doing things right
swwweet
225
10k
Navigating Weather and Climate Data
rabernat
0
560
Site-Speed That Sticks
csswizardry
13
1.6k
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/
クロスアカウントなクロスサービスアクセスの制御
ありがとうございました!