ディレクトリバケットのセキュリティのベストプラクティス
Amazon S3 Express One Zone は、独自のセキュリティポリシーを開発して実装する際に考慮すべきセキュリティ機能を多数提供しています。以下のベストプラクティスは一般的なガイドラインであり、完全なセキュリティソリューションを提供するものではありません。これらのベストプラクティスは顧客の環境に必ずしも適切または十分でない可能性があるので、処方箋ではなく、あくまで有用な推奨事項とお考えください。
デフォルトのブロックパブリックアクセスとオブジェクト所有権の設定
S3 Express One Zone ストレージクラスを使用するには、S3 ディレクトリバケットを使用する必要があります。ディレクトリバケットは S3 ブロックパブリックアクセスと S3 オブジェクト所有権をサポートします。このような S3 機能は、バケットとオブジェクトへのアクセスを監査して管理するために使用されます。
デフォルトでは、ディレクトリバケットのすべてのブロックパブリックアクセス設定が有効になっています。さらに、オブジェクト所有者はバケット所有者の強制に設定されています。これは、アクセスコントロールリスト (ACL) が無効になっていることを意味します。上記の設定は変更できません。上記の機能の詳細については、「Amazon S3 ストレージへのパブリックアクセスのブロック」と「オブジェクトの所有権の制御とバケットの ACL の無効化。」を参照してください。
注記
ディレクトリバケットに保存されているオブジェクトへのアクセスは付与できません。アクセスは、ディレクトリバケットにたいしてのみ付与できます。S3 Express One Zone の認可モデルは、Amazon S3 の認可モデルとは異なります。詳細については、「CreateSession を使用したゾーンエンドポイント API オペレーションの承認」を参照してください。
認証と認可
S3 Express One Zone の認証と認可メカニズムは、ゾーンエンドポイント API オペレーションまたはリージョンエンドポイント API オペレーションのいずれに対してリクエストを行っているかに応じて異なります。ゾーン API オペレーションはオブジェクトレベル (データプレーン) のオペレーションです。リージョン API オペレーションはバケットレベル (コントロールプレーン) のオペレーションです。
S3 Express One Zone では、レイテンシーを最小限に抑えるように最適化された新しいセッションベースのメカニズムを使用して、ゾーンエンドポイント API オペレーションへのリクエストを認証および認可します。セッションベースの認証では、AWS SDK は
CreateSession
API オペレーション を使用して一時的な認証情報をリクエストします。これにより、ディレクトリバケットに低レイテンシーでアクセスできます。これらの一時認証情報は特定のディレクトリバケットに限定され、5 分後に期限切れになります。このような一時的な認証情報を使用して、ゾーン (オブジェクトレベル) API 呼び出しに署名できます。詳細については、「CreateSession を使用したゾーンエンドポイント API オペレーションの承認」を参照してください。
S3 Express One Zone の認証情報を使用したリクエストの署名
S3 Express One Zone 認証情報を使用して、サービス名として s3express
を使用して、AWS Signature Version 4 でゾーンエンドポイント (オブジェクトレベル) API リクエストに署名します。リクエストに署名する際は、CreateSession
から返されたシークレットキーを使用し、セッショントークンを x-amzn-s3session-token header
に渡します。詳細については、「CreateSession」を参照してください。
S3 Express One Zone クラスで サポートされている AWS SDK は、ユーザーに代わって認証情報と署名を管理します。S3 Express One Zone のための AWS SDK を使用して認証情報を更新し、リクエストに署名することをお勧めします。
IAM 認証情報を使用したリクエストの署名
リージョン (バケットレベル) の API 呼び出しはすべて、一時的なセッション認証情報ではなく AWS Identity and Access Management (IAM) 認証情報で認証および署名される必要があります。IAM 認証情報は IAM アイデンティティのアクセスキー ID とシークレットアクセスキーで構成されます。すべての CopyObject
リクエストと HeadBucket
リクエストは IAM 認証情報を使用して認証され、署名される必要があります。
ゾーン (オブジェクトレベル) オペレーション呼び出しのレイテンシーを最小限に抑えるには、CopyObject
と HeadBucket
へのリクエストを除き、CreateSession
呼び出しから取得した S3 Express One Zone 認証情報を使用してリクエストに署名することをお勧めします。
AWS CloudTrail を使用します。
AWS CloudTrail は、Amazon S3 のユーザー、ロール、または AWS のサービス が実行したアクションの記録を提供します。CloudTrail によって収集されたデータを使用して、以下の情報を判断できます。
-
Amazon S3 に対して行われたリクエスト
-
リクエストが行われた IP アドレス
-
リクエストを行ったユーザー
-
リクエストが行われた時間
-
リクエストに関するその他の詳細
AWS アカウントのセットアップ時には、CloudTrail 管理イベントはデフォルトで有効になっています。次のリージョンエンドポイント API オペレーション (バケットレベル、またはコントロールプレーンの API オペレーション) が CloudTrail に記録されます。
注記
ListMultipartUploads
は、ゾーンエンドポイント API オペレーションです。ただし、この API オペレーションは CloudTrail に管理イベントとして記録されます。詳細については、「Amazon Simple Storage Service API リファレンス」の「ListMultipartUploads」を参照してください。
デフォルトでは CloudTrail 証跡はデータイベントを記録しませんが、証跡を設定して、指定したディレクトリバケットのデータイベントを記録したり、ご使用の AWS アカウントですべてのディレクトリバケットのデータイベントを記録したりできます。次のゾーンエンドポイント API オペレーション (オブジェクトレベル、またはデータプレーンの API オペレーション) が CloudTrail に記録されます。
S3 Express One Zone で AWS CloudTrail を使用する方法の詳細については、「S3 Express One Zone の AWS CloudTrail によるログ記録」を参照してください。
AWS モニタリングツールを使用したモニタリングを実装する
モニタリングは、Amazon S3 および AWS ソリューションの信頼性、セキュリティ、可用性、パフォーマンスを維持する上で重要なエレメントです。AWS では、Amazon S3 およびその他の AWS のサービス をモニタリングするのに役立つツールとサービスを提供しています。例えば、Amazon S3 の Amazon CloudWatch メトリクス、特に BucketSizeBytes
と NumberOfObjects
ストレージ メトリクスをモニタリングできます。
S3 Express One Zone ストレージ クラスに保存されたオブジェクトは、Amazon S3 の BucketSizeBytes
と NumberOfObjects
のストレージメトリクスには反映されません。ただし、S3 Express One Zone では、BucketSizeBytes
と NumberOfObjects
のストレージメトリクスがサポートされています。選択したメトリックスを表示するには、StorageType
ディメンションを指定することで Amazon S3 ストレージクラスと S3 Express One Zone ストレージクラスを区別できます。詳細については、「Amazon CloudWatch によるメトリクスのモニタリング」を参照してください。
詳細については、Amazon CloudWatch によるメトリクスのモニタリングおよびAmazon S3 でのログ記録とモニタリングを参照してください。