DEVELOPER BLOG

開発者ブログ

HOME > 開発者ブログ > 【AWS入門】S3バケットポリシーによるアクセスコントロール - PrismScaler

【AWS入門】S3バケットポリシーによるアクセスコントロール - PrismScaler

1. はじめに

こんにちは!株式会社Definerのライターチームです! 今回は、S3バケットポリシーを用いたアクセス制御について気になりますよね。 実際の画面や、資源を見ながら詳しく解説していきましょう。

2. 目的・ユースケース

この記事では、S3バケットポリシーを使ってアクセスを制御したいときに、参考になる情報やプラクティスをまとめています。

3. S3のアクセス制御の選択肢

まずは、S3バケットのアクセス制御についておさらいしていきます。 S3のアクセス制御方法は、おおまかに以下4種類が存在します。   1. IAM Policy 通常のAWSのアクセス制御で広く用いられており、S3へのアクセス元にアタッチします。例えば、EC2やLambdaなどにアタッチされているIAMロールです。 Json形式のポリシードキュメントでアクセスを定義し、リソースやアクションを個別に設定していきます。 S3の場合、フォルダやファイル単位でのアクセス制限が可能です。   2. Bucket Policy S3 Bucketごとにアクセスを制御します。 Json形式ポリシードキュメントでアクセスを定義し、クロスアカウント(他AWSアカウント)からのアクセス許可も行うことができます。 カスタム性が高いく、最もメジャーなS3のアクセス管理方法ではないでしょうか。   3. Access Control List(ACL) バケットまたはオブジェクト単位でアクセス制御ができます。 設定は簡単ですが、柔軟なアクセス制御には向いていません。 また、IAM PolicyやBucket PolicyでDenyが指定されている場合、そちらが優先されます。 上記の様な理由から、ACLの使用頻度はあまり高くありません。   4. Public Access Block S3 Bucketをパブリックに公開することを防ぎます。 デフォルトで有効になっているため、S3を公開したい場合のみ、設定を無効化します。

4. S3バケットポリシーの実装

早速、Bucket Policyを使ってアクセス制御を実施してみます。   ①テスト用のS3作成 以下コマンドを実行して、S3を作成してください。   ②アップロードの確認 作成したS3に、任意のファイルがアップロードできることを確認します。   ③S3のBucket Policy設定 S3バケット詳細画面にアクセスし、「アクセス許可」→「バケットポリシー」→「編集」 以下のJsonをコピペします。これは、対象S3へのアップロードを禁止するという内容です。 最後に保存をクリックします。   ④アップロードが失敗することの確認 S3に新たにファイルをアップロードしようとしたところ、以下のメッセージが出て失敗しました。 「アクセスが拒否されました。ファイルとフォルダをアップロードするアクセス許可がありません。」
 
S3 Bucket Policyが正しく適用されていることが確認できました!
 
## S3を作成するコマンド
aws s3api create-bucket  \
--bucket test-bucketpolicy-xxxxxxx  \
--create-bucket-configuration LocationConstraint=ap-northeast-1                
 

Bucket Policyに適用するJsonポリシードキュメント
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicRead",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::test-bucketpolicy-xxxxxxx/*"
        }
    ]
}                  

5. 引用・参考記事

6. 独自ソリューション「PrismScaler」について

PrismScalerは、開発・運用を要さずにたった3ステップで、AWSやAzure、GCPなどのマルチクラウド基盤構築を実現するWebサービスです。 エンジニアの大変な作業を肩代わり ・自動構築 ・自動監視 ・構成可視化 クラウド基盤に関わる作業を以上のように効率化します。 SRE/DevOpsエンジニアが行う大変な作業を肩代わりします。 高品質な汎用クラウド基盤の実現 ・クラウド基盤構築/クラウド移行 ・クラウドの保守運用・コスト最適化 など幅広い利用シーンを想定しています。IaaSやPaaSを適切に組み合わせた数百を超える高品質な汎用クラウド基盤を容易に実現できます。 興味を持たれた方には、無料で資料を提供しております。 お気軽にご相談ください。

7. お問合せ

株式会社Definerでは、 ・ITの上流から下流まで一気通貫のワンストップソリューションをご提供。 ・AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミット。 ・少ないエンジニアで事業が成長する仕組みづくりの実現。 ・エンジニアが喜ぶ、採用しやすい環境づくりの実現。 ・高速なアジャイル開発環境の実現。 ・自社プロダクトとしてPrismScalerを展開。 上記事業内容を進行しております。 ※「開発者ブログ」では、エンジニアの入門編として有益な情報を無料公開しています。 ご相談やお問い合わせは「株式会社Definer」へ。

8. Definerに関して。

・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。 ・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。 ・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。 ・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。