Closed6

S3とのセキュアなファイルのやりとり/保管について

ChiHaRuChiHaRu

ファイルのやりとり: その1

アクセス方法

まず、S3にアクセスする方法として、

①AWS Management Console
②AWS Command Line Interface
③AWS SDK
④Amazon S3 REST API

の4種類がある

うち、③, ④については補足事項を載せておく

③AWS SDK

  • プログラムによるアクセスを作成する際に使用
  • 基盤となる Amazon S3 REST API をラップしている
  • すべてのやり取りは認証されるか匿名で行われる

④Amazon S3 REST API

  • Amazon S3 に対する HTTP インターフェイス
  • 標準 HTTP リクエストを使用してバケットとオブジェクトを作成、取得、削除できる
  • アプリケーションで直接 REST API を呼び出す場合、署名を計算するコードを作成し、それをリクエストに追加する必要がある
  • 形式としては、
    • 仮想ホスティング形式の URI
    • パス形式の URI(※)

の使用が可能

  • AWS SDKを使用せず、直接APIを叩く場合は、署名バージョン4の署名を使用する必要がある。詳細は、コチラ

※パス形式のURIは将来的に廃止される予定

参考

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/Welcome.html#API
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/VirtualHosting.html

ChiHaRuChiHaRu

ファイルのやりとり: その2

アクセスコントロール

アクセスコントロールに関する要素として、

①ACL
②バケットポリシー
③ユーザーポリシー
④パブリックアクセス

の大きく分けて、4つがある

①ACL

  • バケットとオブジェクトへのアクセスを管理できる
  • 最近は、多くのケースにおいてACLを使用する必要はなくなってきている
  • ただし、以下のようなケースではACL が適している
    • オブジェクトをバケット所有者が所有していない場合
    • オブジェクトレベルで権限を管理する必要がある場合
    • オブジェクト ACL がオブジェクトレベルのアクセス許可のみを制御する場合

②バケットポリシー

  • Amazon S3 バケットとその中のオブジェクトへのアクセス許可を付与できるリソースベースのポリシー
  • バケット所有者のみが、ポリシーをバケットに関連付けることができる

③ユーザーポリシー

  • Amazon S3 へのアクセスを制御するための IAM ユーザーまたはロールポリシーを作成して設定する

④パブリックアクセス

  • パブリックアクセスブロック設定は、アクセスポイント、バケット、AWS アカウントに対して有効にできる
  • オブジェクトごとのパブリックアクセスブロック設定はサポートされていない

①~④の強さについて

  • 許可 < 拒否
  • 同一アカウントの場合
    • S3バケットポリシーかIAMポリシーのどちらかで許可されば許可される
    • S3バケットポリシーかIAMポリシーのどちらかで拒否された場合は拒否される
  • クロスアカウントアクセスの場合
    • S3バケットポリシーかIAMポリシーの両方で許可されば許可される
    • S3バケットポリシーかIAMポリシーのどちらかで拒否された場合は拒否される

参考

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/access-policy-alternatives-guidelines.html
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/acl-overview.html
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/bucket-policies.html
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/user-policies.html
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/access-control-block-public-access.html
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/access-control-block-public-access.html#access-control-block-public-access-policy-status

https://qiita.com/K5K/items/ef6a02aee760b128a25b
https://dev.classmethod.jp/articles/s3-acl-wakewakame/
https://www.bioerrorlog.work/entry/s3-bucket-policy-vs-iam-policy

ChiHaRuChiHaRu

ファイルのやりとり: その3

S3とファイルを送受信するに関連するポイントとして、

①送信時のデータの暗号化
②Amazon S3 アクセス用の VPC エンドポイントの使用
③マネージド AWS セキュリティサービスを使用したデータセキュリティの監視

がある

①送信時のデータの暗号化

  • HTTPS (TLS) を使用して、悪意のある第三者からの盗聴または操作を防止する
    • リクエストが SSL 経由でない場合に、オブジェクトとオブジェクトタグを送信先バケットとそのコンテンツに複製することを拒否するには、aws:SecureTransport 条件をfalseにする

②Amazon S3 アクセス用の VPC エンドポイントの使用

  • Amazon S3 への接続のみを許可する VPC 内の論理エンティティ
  • VPC エンドポイントは、トラフィックがオープンインターネットを通過するのを防ぐのに役立つ
  • バケットポリシーを使用して、コントロールできる。詳細はコチラを参照。
  • 通信の際は、エンドポイントURLを叩く。
  • エンドポイントには、
    • Regional バケットエンドポイント (例: s3.us-east-1.amazonaws.com)
    • 制御エンドポイント (例: s3-control.us-east-1.amazonaws.com)
    • アクセスポイントエンドポイント (例: s3-accesspoint.us-east-1.amazonaws.com)

の3つがある

③マネージド AWS セキュリティサービスを使用したデータセキュリティの監視

あとで書く

参考

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/security-best-practices.html
https://www.aws-room.com/entry/s3-gateway-endpoint
https://repost.aws/ja/knowledge-center/vpc-interface-endpoints-connect-s3
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/privatelink-interface-endpoints.html

ChiHaRuChiHaRu

ファイルの保管

ファイルを安全に保管するには暗号化が必要だが、
2023 年 1 月 5 日以降、Amazon S3 にアップロードされるすべての新しいオブジェクトは、2023 年 1 月 5 日以降、Amazon S3 にアップロードされるすべての新しいオブジェクトは、追加費用なしで、パフォーマンスに影響を与えずにSSE-S3により自動的に暗号化されるようになったため、特に意識しなくてもよさそう

ただし、CloudTrailで監査ログを取る場合は、SSE-KMSを用いる必要がある

参考

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/UsingEncryption.html
https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_Amazon_S3_Security_0131_v1.pdf

ChiHaRuChiHaRu

必要な情報は一通り収集できたので、クローズします

このスクラップは2024/01/27にクローズされました