---
title: Cloud Security Day 2023　#Lightning Talk＆交流会
tags: 
author: [ますの＠AWS運用保守 Lv1.1](https://convert.docswell.com/user/masno_soy)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/4EMVW9K2EW.jpg?width=480
description: Cloud Security Day 2023　#Lightning Talk＆交流会
published: November 22, 23
canonical: https://convert.docswell.com/s/masno_soy/K6Y8NV-2023-11-22-095205
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/4EMVW9K2EW.jpg)

CLOUD SECURITY DAY 2023 #LIGHTNING TALK＆交流会
【S3バケットアクセス制御】
各種ポリシーを活用した
S3アクセス制御
2023.11.22
佐藤 竜也


# Page. 2

![Page Image](https://bcdn.docswell.com/page/PER2YGX579.jpg)

自己紹介
# 名前
・佐藤 竜也（ますの）
@masno_soy
# 経歴
・営業→婚活パーティ運営→SES→CIer
# 業務内容
・AWS基盤 運用・保守 / PM（仮）
# 資格
・2023 Japan AWS All Certifications Engineers
# 深掘りしたいAWSサービス
・CloudWatch


# Page. 3

![Page Image](https://bcdn.docswell.com/page/P7XDGX6XJX.jpg)

お話しする内容
S3バケットへのアクセス制御で各種ポリシーを活用する
S3バケットポリシーでアクセス元を制限する
特定のVPCに限定
特定のIPアドレスに限定
VPCエンドポイントポリシーでアクセス先を制限する
AWSのリポジトリへアクセス可能
野良AWSアカウントへのS3バケットアクセスは不可


# Page. 4

![Page Image](https://bcdn.docswell.com/page/37KX4W19JD.jpg)



# Page. 5

![Page Image](https://bcdn.docswell.com/page/LJ35L1Q975.jpg)

なぜS3バケットへのアクセス制御を実装したいのか
今回は「情報流出を未然に防ぐ」ことを目的とする
アクセス元制限（IP / VPCエンドポイント）
IAM情報漏洩時の予防措置となるため
アクセス先制限（AWSアカウントID）
悪意あるユーザによるデータ漏えいを防ぐため


# Page. 6

![Page Image](https://bcdn.docswell.com/page/8JDDNX98JG.jpg)

各ポリシーに反映するアクセス制御 設計方針
以下の要素を利用してアクセス制御を行う
・IPアドレス
・VPCエンドポイント
・AWSアカウントID
ガードレールとなる要所は
【明示的な拒否設定】を用いる


# Page. 7

![Page Image](https://bcdn.docswell.com/page/VEPX5PZWJ8.jpg)

前提知識
AWSポリシーの
評価理論


# Page. 8

![Page Image](https://bcdn.docswell.com/page/27VLP2W9EQ.jpg)

前提知識：AWSポリシーの評価理論
引用：https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow


# Page. 9

![Page Image](https://bcdn.docswell.com/page/5JGXPRD47L.jpg)

前提知識：AWSポリシーの評価理論
優先度
評価理論
内容
明示的な拒否
（Deny）
ポリシーでDenyが設定されている場合。
IAMやS3などのポリシーで明示的なAllow条件が設定されていても、明示的なDeny
が優先される。
2
明示的な許可
（Allow）
ポリシーでAllowが設定されている場合。
IAMやS3などのポリシーで明示的なDenyが設定されていなければ、明示的なAllow
が適用される。
3
暗黙的な拒否
（Deny）
ポリシーにDenyもAllowも設定されていない場合（デフォルト）。
暗黙のDenyとして通信は遮断される。
1


# Page. 10

![Page Image](https://bcdn.docswell.com/page/47Q82V1REP.jpg)

着地点に向けた概要
IAMアクセスキー/ロールを利用してS3にアクセスする
S3バケットにアクセス制御を実装する
特定のVPCに限定
特定のIPアドレスに限定
S3 VPCエンドポイントにアクセス制御を実装する
AWSのリポジトリへアクセス可能
外部AWSアカウントへのS3バケットアクセスは不可


# Page. 11

![Page Image](https://bcdn.docswell.com/page/KE42LMRQ71.jpg)

設定内容
IAMポリシー


# Page. 12

![Page Image](https://bcdn.docswell.com/page/L71ML8QLJG.jpg)

IAM でのセキュリティのベストプラクティスより抜粋
IAM ポリシーで条件を指定してアクセスをさらに制限する
ポリシーステートメントが有効になる条件を指定する
ことができます。これにより、アクションやリソース
へのアクセスを許可することができますが、これは、
アクセスのリクエストが特定の条件を満たしている場
合に限られます。
引用：https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html


# Page. 13

![Page Image](https://bcdn.docswell.com/page/G7W3VZMQ72.jpg)

IAMで細かいことを考えないで
セキュリティ担保された運用が
したい（心の声）


# Page. 14

![Page Image](https://bcdn.docswell.com/page/4JZV41Q373.jpg)

まずはAWS管理ポリシーでの運用からスタート
AWS 管理ポリシーの開始と最小特権のアクセス許可への移行
ユーザーやワークロードへのアクセス許可の付与を開始す
るには、多くの一般的なユースケースに対してアクセス許
可を付与する AWS マネージドポリシーを使用します。
引用：https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html


# Page. 15

![Page Image](https://bcdn.docswell.com/page/YE653L6ZJV.jpg)

設定内容
S3バケットポリシー


# Page. 16

![Page Image](https://bcdn.docswell.com/page/GE5YL169E4.jpg)

S3 バケットポリシー設計
IAMアクセスキーを利用してS3バケットにアクセスする
S3バケットにアクセス制御を実装する
特定のVPCに限定
特定のIPアドレスに限定
EC2はVPCエンドポイント経由でS3へアクセスする
AWSのリポジトリへアクセス可能
野良AWSアカウントへのS3バケットアクセスは不可


# Page. 17

![Page Image](https://bcdn.docswell.com/page/972GL1M57R.jpg)

S3 バケットポリシー設計
{
&quot;Version&quot;: &quot;2012-10-17&quot;,
&quot;Condition&quot;: {
&quot;Statement&quot;: [
&quot;NotIpAddress&quot;: {
{
&quot;aws:SourceIp&quot;: &quot;54.x.x.x/32&quot;
&quot;Effect&quot;: &quot;Deny&quot;,
},
&quot;Principal&quot;: &quot;*&quot;,
&quot;StringNotEquals&quot;: {
&quot;Action&quot;: &quot;s3:*&quot;,
&quot;aws:SourceVpce&quot;: &quot;vpce-1a2b3c4d&quot;
&quot;Resource&quot;: [
}
&quot;arn:aws:s3:::bbbb-bucket&quot;,
}
&quot;arn:aws:s3:::bbbb-bucket/*&quot;
],
}
]
}
「54.x.x.x/32」もしくは
「vpce-1a2b3c4d」以外は拒否


# Page. 18

![Page Image](https://bcdn.docswell.com/page/DJYVQZX6JM.jpg)

（余談）Allowのみで制御：セキュリティホールあり
{
&quot;Version&quot;: &quot;2012-10-17&quot;,
&quot;Statement&quot;: [
{
&quot;Effect&quot;: &quot;Allow&quot;,
&quot;Principal&quot;: &quot;*&quot;,
&quot;Action&quot;: &quot;s3:*&quot;,
&quot;Resource&quot;: [
&quot;arn:aws:s3:::bbbb-bucket&quot;,
&quot;arn:aws:s3:::bbbb-bucket/*&quot;
],
Denyが明記されていないため
明示的なAllow（優先度２）が適用される
（例）
IAMポリシーでAllow設定あり
IP制限等が機能しない
IAMポリシーでAllow/Deny設定なし
制限範囲内から誰でもアクセス可能


# Page. 19

![Page Image](https://bcdn.docswell.com/page/V7NMK351E8.jpg)

赤丸部分（S3バケット入口制御）が完了


# Page. 20

![Page Image](https://bcdn.docswell.com/page/YJ9NV9YYJ3.jpg)

設定内容
VPCエンドポイント
ポリシー


# Page. 21

![Page Image](https://bcdn.docswell.com/page/GJ8KP96KED.jpg)

VPCエンドポイントポリシー設計
IAMアクセスキーを利用してS3バケットにアクセスする
S3バケットにアクセス制御を実装する
特定のVPCに限定
特定のIPアドレスに限定
EC2はVPCエンドポイント経由でS3へアクセスする
AWSのリポジトリへアクセス可能
外部AWSアカウントへのS3バケットアクセスは不可


# Page. 22

![Page Image](https://bcdn.docswell.com/page/LJLZ1W9P7R.jpg)

VPCエンドポイントポリシー設計
{
&quot;Version&quot;: &quot;2008-10-17&quot;,
&quot;Statement&quot;: [
&quot;Condition&quot;: {
{
&quot;StringNotEquals&quot;: {
&quot;Effect&quot;: &quot;Deny&quot;,
&quot;aws:PrincipalAccount&quot;: &quot;123456789012&quot;
&quot;Principal&quot;: &quot;*&quot;,
}
&quot;Action&quot;: &quot;*&quot;,
}
&quot;NotResource&quot;: [
},
&quot;arn:aws:s3:::packages.ap-northeast-1.amazonaws.com/*&quot;,
{
&quot;arn:aws:s3:::repo.ap-northeast-1.amazonaws.com/*&quot;,
&quot;Effect&quot;: &quot;Allow&quot;,
&quot;arn:aws:s3:::amazonlinux.ap-northeast-1.amazonaws.com/*&quot;,
&quot;Principal&quot;: &quot;*&quot;,
&quot;arn:aws:s3:::amazonlinux-2-repos-ap-northeast-1/*&quot;,
&quot;Action&quot;: &quot;*&quot;,
&quot;arn:aws:s3:::al2023-repos-us-east-1-de612dc2/*&quot;
&quot;Resource&quot;: &quot;*&quot;
],
}
]
}


# Page. 23

![Page Image](https://bcdn.docswell.com/page/47MVW9Z27W.jpg)

VPCエンドポイントポリシー設計（ALリポジトリ）
&quot;NotResource&quot;: [
&quot;arn:aws:s3:::packages.ap-northeast-1.amazonaws.com/*&quot;,
&quot;arn:aws:s3:::repo.ap-northeast-1.amazonaws.com/*&quot;,
&quot;arn:aws:s3:::amazonlinux.ap-northeast-1.amazonaws.com/*&quot;,
&quot;arn:aws:s3:::amazonlinux-2-repos-ap-northeast-1/*&quot;,
&quot;arn:aws:s3:::al2023-repos-ap-northeast-1-de612dc2/*&quot;
AL1
AL2
AL2023
S3エンドポイントを経由してアクセスする場合
AmazonLinux関連のリポジトリアクセス以外はDeny
→ AmazonLinux関連のリポジトリは拒否されない


# Page. 24

![Page Image](https://bcdn.docswell.com/page/P7R2YG65J9.jpg)

VPCエンドポイントポリシー設計（ALリポジトリ）
「NotResource」に記載していない状態ではアクセス不可
403エラーでリポジトリにアクセスが出来ない


# Page. 25

![Page Image](https://bcdn.docswell.com/page/PJXDGXMXEX.jpg)

VPCエンドポイントポリシー設計（AWSアカウントID）
&quot;Condition&quot;: {
&quot;StringNotEquals&quot;: {
&quot;aws:PrincipalAccount&quot;: &quot;123456789012&quot;
}
「StringNotEquals」の項目へ
アクセス許可するAWSアカウントID
を記載
}
},
{
&quot;Effect&quot;: &quot;Allow&quot;,
&quot;Principal&quot;: &quot;*&quot;,
&quot;Action&quot;: &quot;*&quot;,
&quot;Resource&quot;: &quot;*&quot;
}
]
}
下記で指定した除外の通信に対して
・NotResource
・StringNotEquals
「Allow」で通信許可を記載


# Page. 26

![Page Image](https://bcdn.docswell.com/page/3JKX4WG9ED.jpg)

赤丸部分（VPCエンドポイント出口制御）が完了


# Page. 27

![Page Image](https://bcdn.docswell.com/page/LE35L1N9J5.jpg)

これで完了かと思いきや
まだセキュリティホールが...


# Page. 28

![Page Image](https://bcdn.docswell.com/page/8EDDNXW8EG.jpg)

考慮漏れ確認
・54.xx.xx.xxでダウンロード
・別アカウントへアップロード
・クラウドストレージ等に別途保存
etc...


# Page. 29

![Page Image](https://bcdn.docswell.com/page/V7PX5P9WE8.jpg)

セキュリティホールを埋める手段を考える
IAMのAWS管理ポリシーでS3 Read Onlyとする
バケットポリシーでGIP経由のGet操作は禁止する
DX接続を実装しプライベート通信を実装する
54.xx.xx.xxはリスク受容とする
etc...
どこまでリスクを許容出来るか
データの特性から検討が必要


# Page. 30

![Page Image](https://bcdn.docswell.com/page/2JVLP2M97Q.jpg)

まとめ
AWS管理ポリシーで簡易な運用を実現するためにリソースベー
スポリシーの設定を取り入れる
VPCエンドポイントポリシー、S3バケットポリシーなど
ガードレールの要所となる権限は「明示的なDeny」で設定する
IAM運用が容易なポリシー設計はセキュリティホールが生じや
すいので注意する
テストケースに沿ってリスク許容範囲か否かを判断する


# Page. 31

![Page Image](https://bcdn.docswell.com/page/5EGXPRG4JL.jpg)

参考情報
●ポリシーの評価論理
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow
●バケットポリシーを使用した VPC エンドポイントからのアクセスコントロール
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html
●インターネットにアクセスせずに Amazon Linux 1、Amazon Linux 2、または Amazon Linux 2023 を 実行している EC2 インスタンス
で yum を更新したり、パッケージをインストールする方法はありますか?
https://repost.aws/ja/knowledge-center/ec2-al1-al2-update-yum-without-internet
●IAM でのセキュリティのベストプラクティス
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html
●閉域要件におけるS3周辺ポリシーの組み合わせ方
https://speakerdeck.com/mhrtech/bi-yu-yao-jian-niokerus3zhou-bian-porisifalsezu-mihe-wasefang


# Page. 32

![Page Image](https://bcdn.docswell.com/page/4JQ82VXR7P.jpg)

ご清聴ありがとうございました


