カテゴリ: AWS S3 更新日: 2025/12/12

【AWS】S3のアクセス制限方法まとめ!初心者でもわかるポリシー・ACL・バケット設定の使い分け

319
【AWS】S3のアクセス制限方法まとめ【ポリシー・ACL・バケット設定】

先生と生徒の会話形式で理解しよう

生徒

「AWSのS3って便利って聞くんですけど、アクセス制限はどうやってするんですか?」

先生

「いい質問ですね。S3では、バケットポリシーやACL、バケットの設定などで細かくアクセス制御ができるんですよ。」

生徒

「なるほど!それぞれの違いや使い分けを教えてください!」

先生

「それでは、S3のアクセス制限について、わかりやすく解説していきましょう!」

1. AWS S3のアクセス制限とは?

1. AWS S3のアクセス制限とは?
1. AWS S3のアクセス制限とは?

AWSのS3(エススリー:Simple Storage Service)は、オブジェクトストレージとして人気がありますが、セキュリティ対策としてアクセス制限がとても重要です。S3に保存したファイル(オブジェクト)やバケットが誰でもアクセスできる状態だと、情報漏洩のリスクが高まります。

S3のアクセス制御は、主に以下の3つの方法で行います。

  • バケットポリシー(Bucket Policy)
  • ACL(Access Control List)
  • バケットの設定(パブリックアクセスブロックなど)

2. バケットポリシーとは?IAMポリシーとの違い

2. バケットポリシーとは?IAMポリシーとの違い
2. バケットポリシーとは?IAMポリシーとの違い

バケットポリシーは、S3の特定のバケットに対してアクセス権限を設定するJSON形式のポリシーです。IAMポリシーと違い、リソース側(S3バケット)に設定します。

例えば、特定のIPアドレスからのみアクセスを許可したい場合や、特定のユーザーやアカウントにだけアクセスさせたい場合に使用します。

以下は、指定のIPアドレスからのみオブジェクトの読み取りを許可するバケットポリシーの例です:


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::example-bucket/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "203.0.113.0/24"
        }
      }
    }
  ]
}

このように、条件を組み合わせて柔軟なアクセス制御が可能です。

3. ACL(Access Control List)とは?

3. ACL(Access Control List)とは?
3. ACL(Access Control List)とは?

ACLは、S3の初期のアクセス制御方式で、オブジェクトやバケット単位で「誰がアクセスできるか」を指定します。

たとえば、「全員に読み取りを許可する」ACLを設定すると、世界中からそのオブジェクトにアクセスできるようになります。

ただし、セキュリティの観点からACLの使用は非推奨となっており、現在はバケットポリシーやIAMポリシーの使用が推奨されています。

以下は、ACLでオブジェクトを全員に公開する例です:


aws s3api put-object-acl --bucket example-bucket --key sample.txt --acl public-read

このコマンドにより、sample.txtは誰でも閲覧可能になります。実運用では慎重に!

AWSの基本用語や仕組みを、図解でサクッと理解したい人には、 入門の定番書がこちらです。

AWSの基本が全部わかる教科書をAmazonで見る

※ Amazon広告リンク

4. バケットのパブリックアクセスブロック設定

4. バケットのパブリックアクセスブロック設定
4. バケットのパブリックアクセスブロック設定

2020年以降、S3ではパブリックアクセスブロックの設定が標準で有効になっており、誤ってバケットを公開しないようにするための機能です。

この設定を有効にしておくと、ACLやポリシーでパブリック許可をしていても、それをブロックしてくれます。

  • 新しいACLのパブリックアクセスをブロック
  • 既存のACLによるパブリックアクセスをブロック
  • バケットポリシーによるパブリックアクセスをブロック

マネジメントコンソールでも設定可能ですが、CLIからも以下のように変更可能です:


aws s3api put-public-access-block \
--bucket example-bucket \
--public-access-block-configuration '{
    "BlockPublicAcls": true,
    "IgnorePublicAcls": true,
    "BlockPublicPolicy": true,
    "RestrictPublicBuckets": true
}'

これにより、意図しない公開設定を回避できます。

5. IAMポリシーでS3アクセス制御を強化

5. IAMポリシーでS3アクセス制御を強化
5. IAMポリシーでS3アクセス制御を強化

IAMポリシーは、AWSアカウント内のユーザーやロールに対して権限を付与する方法です。

ユーザーがS3にアクセスする場合、バケットポリシーだけでなく、IAMポリシーでも制御することが重要です。例えば、あるユーザーに読み取り専用権限を与えるIAMポリシーは以下の通りです:


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject"],
      "Resource": ["arn:aws:s3:::example-bucket/*"]
    }
  ]
}

IAMポリシーとバケットポリシーの両方でアクセス制御を設計することで、より強固なセキュリティ体制が構築できます。

6. よくあるアクセス制限の失敗例

6. よくあるアクセス制限の失敗例
6. よくあるアクセス制限の失敗例

S3のアクセス制限では、以下のような失敗がよくあります:

  • バケットポリシーで特定のユーザーを許可したが、IAMポリシーで拒否していた
  • パブリックアクセスブロックを有効にしていて、ポリシーでの公開設定が無効になっていた
  • ACLで全公開してしまい、情報漏洩のリスクが発生

これらを防ぐためには、設定の重なりを理解しておくことが重要です。

7. S3アクセス制限のベストプラクティス

7. S3アクセス制限のベストプラクティス
7. S3アクセス制限のベストプラクティス

S3を安全に運用するために、以下のベストプラクティスを意識しましょう。

  • パブリックアクセスは基本的に禁止(本当に必要なときだけ許可)
  • アクセス制御にはバケットポリシー+IAMポリシーの組み合わせを使う
  • ACLは極力使用せず、必要最小限に
  • アクセスログ(S3アクセスログ)を有効にして監査可能に
  • IAMユーザーに最小権限を付与

これらを守ることで、初心者でも安全にS3を活用できます。

AWS S3の一覧へ
新着記事
FlutterのMVP・MVVMアーキテクチャの違いと使い分け
FlutterのMVP・MVVMアーキテクチャの違いと使い分けを初心者向けに解説!
オニオンアーキテクチャの基本とFlutterでの適用例
オニオンアーキテクチャの基本とFlutterでの適用例を初心者向けに解説
クリーンアーキテクチャとは?Flutterでの導入メリット
クリーンアーキテクチャとは?Flutterでの導入メリットをやさしく解説
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金まとめ
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金を初心者向けに徹底解説
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク