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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Koheiawa
January 20, 2025
Technology
62
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
0
17
CCoEセミナー_第33回_AWS_reInvent_社内Recap_v0.1.pdf
koheiawa
0
35
AWS VerifiedAccess
koheiawa
1
550
IAMAccessAnalyzer_Security-JAWS
koheiawa
1
1.8k
SecurityHub_FinJAWS
koheiawa
8
1.3k
DirectConnectSiteLink_みのるんさん勉強会
koheiawa
1
4.8k
Other Decks in Technology
See All in Technology
なぜ私たちのSREプラクティスはなかなか機能しないのか 〜システムより先に組織を見る〜 / Why our SRE practices aren't really working
vtryo
3
3.6k
ボーイスカウトルールでメモリやスキルを改善しよう
azukiazusa1
1
740
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
2
1.5k
kintone の AI コワーカーを、 Anthropic にエージェントを"ホストさせて"作った話 #devkinmeetup
sugimomoto
0
100
誤解だらけの開発生産性 / Myths and Misconceptions about Developer Productivity
i35_267
1
240
あなたの『Site』はどこですか? — xREという考え方
miyamu
0
1.2k
「早く出す」より「事業に効く」 ── 顧客の業務サイクルから逆算するAI時代の二重ループ開発と「変化の設計者」 / devsumi2026
rakus_dev
1
220
実装だけじゃない! CCA-F取得エンジニアが教えるClaude Code開発プロセス活用術
diggymo
2
650
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
DatabricksにおけるMCPソリューション
taka_aki
1
240
LLMやAIエージェントをソフトウェアに組み込むプラクティス
shibuiwilliam
1
360
脱金融のフューチャー・デザイン / Future Design Beyond Finance
ks91
PRO
0
150
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
The browser strikes back
jonoalderson
0
1.4k
Automating Front-end Workflow
addyosmani
1370
210k
The Curse of the Amulet
leimatthew05
2
13k
The SEO Collaboration Effect
kristinabergwall1
1
500
Technical Leadership for Architectural Decision Making
baasie
3
440
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
220
Are puppies a ranking factor?
jonoalderson
1
3.7k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
240
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
340
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
390
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/
クロスアカウントなクロスサービスアクセスの制御
ありがとうございました!