Amazon S3 バケット内のファイルを保護するにはどうすればよいですか?
Amazon Simple Storage Service (Amazon S3) リソースへのアクセス権限を制限し、これらのリソースへのアクセスを監視したいと考えています。
簡単な説明
ファイルと Amazon S3 バケットを保護するには、以下のベストプラクティスに従ってください。
- S3 リソースへのアクセスを制限します。 リソースへのアクセスをどうしてもそれを必要とする人に限定してください。最小権限の原則に従ってください。
- **S3 リソースを監視:**リソースを監視します。以下を使用します。 AWS CloudTrail ログ、S3 サーバーアクセスロギング、AWS Config、AWS Identity and Access Management (IAM) Access Analyzer、Amazon Macie、Amazon CloudWatch、または AWS Trusted Advisor の S3 バケット権限チェック。
- **暗号化を使用してデータを保護してください。**Amazon S3 は、送信時の暗号化、サーバー側の暗号化 (SSE)、およびクライアント側の暗号化をサポートしています。
解決方法
S3 リソースへのアクセスを制限する
デフォルトでは、すべての S3 バケットはプライベートで、明示的にアクセスを許可されたユーザーのみがアクセスできます。
以下を実行して、S3 バケットまたはオブジェクトへのアクセスを制限します。
- 特定のバケットやオブジェクトにアクセスできるユーザーを指定する IAM ユーザーポリシーを書きます。IAM ポリシーは、複数のユーザーの Amazon S3 アクセス権限をプログラムにより管理する方法を提供します。ユーザーポリシーの作成とテストの詳細については、「AWS ポリシージェネレーター」と「IAM ポリシーシミュレーター」を参照してください。
- 特定のバケットやオブジェクトへのアクセスを定義するバケットポリシーを書きます。バケットポリシーを使用して、AWS アカウント全体へのアクセスを許可したり、公開または匿名のアクセス権限を付与したり、条件に基づいてアクセスを許可またはブロックしたりできます。バケットポリシーの作成とテストの詳細については、AWS Policy Generator を参照してください。
**注:**バケットポリシーで拒否ステートメントを使用して、特定の IAM ユーザーへのアクセスを制限できます。IAM ポリシーでユーザーにアクセス権限が付与されている場合でも、アクセスを制限できます。 - Amazon S3 パブリックアクセスブロックを使って、パブリックアクセスを一元的に制限する方法として使用します。パブリックアクセスブロックの設定は、バケットポリシーとオブジェクト権限よりも優先されます。公開したくないすべてのアカウントとバケットについて、必ず [公開アクセスをブロック] を有効にしてください。
- バケットとオブジェクトにアクセス制御リスト (ACL) を設定します。
注: 権限をプログラム的に管理する必要がある場合は、ACL の代わりに IAM ポリシーまたはバケットポリシーを使用してください。ただし、バケットポリシーが最大ファイルサイズの 20 KB を超える場合は ACL を使用できます。または、ACL を使用して Amazon S3 サーバーアクセスログまたは Amazon CloudFront ログへのアクセスを許可することもできます。
ACL を使用してリソースを保護する場合は、次のベストプラクティスを考慮してください。
- バケットまたはオブジェクトに対する Amazon S3 アクションを許可する ACL アクセス権限を確認します。ACL 権限とそれによって許可されるアクションのリストについては、どのような権限を付与できますか?を参照してください。
- バケットへの読み取り権限と書き込み権限を誰に付与するかは厳しくしてください。
- Everyone グループに読み取りアクセス権を付与する前に、ユースケースを慎重に検討してください。これにより、誰でもバケットやオブジェクトにアクセスできるようになります。
- Everyone グループへの書き込みアクセスは絶対に許可しないでください。この設定では、誰でもバケットにオブジェクトを追加できるようになり、その分請求が行われます。また、この設定により、誰でもバケット内のオブジェクトを削除るようになります。
- Any authenticated AWS userグループへの書き込みアクセスは絶対に許可しないでください。このグループには、アカウントの IAM ユーザーだけでなく、アクティブな AWS アカウントを持つすべての人が含まれます。アカウントの IAM ユーザーのアクセスを制御するには、代わりに IAM ポリシーを使用してください。Amazon S3 が IAM ポリシーを評価する方法の詳細については、「Amazon S3 がリクエストを承認する方法」を参照してください。
ポリシー、ブロックパブリックアクセス、ACL を使用する以外に、次の方法で特定のアクションへのアクセスを制限することもできます。
- MFA 削除を有効にする。これには、オブジェクトの削除またはバケットのバージョニングの無効化を行う前に、多要素認証 (MFA) デバイスを使用して認証を行う必要があります。
- MFA で保護された API アクセスを設定します。これには、ユーザーは特定の Amazon S3 API オペレーションを呼び出すには AWS MFA デバイスで認証する必要があります。
- S3 オブジェクトを他のユーザーと一時的に共有する場合は、署名付き URL を作成して、そのオブジェクトへの時間制限付きのアクセスを許可します。詳細については、「署名済み URL を使用したオブジェクトの共有」を参照してください。
S3 リソースを監視
ログ記録を有効にして S3 リソースを監視するには、次の方法があります。
- AWS CloudTrailログを設定します。デフォルトでは、CloudTrail はバケットレベルのアクションのみを追跡します。オブジェクトレベルのアクション (GetObject など) を追跡するには、Amazon S3 データイベントを有効にします。
- Amazon S3 サーバーアクセスログを有効にします。これらのログを確認する方法の詳細については、Amazon S3 サーバーアクセスログ形式を参照してください。
- AWS Config を使用して、パブリックの読み取りまたは書き込みアクセスを許可する違反がないか、バケットの ACL とバケットポリシーを監視します。詳細については、「s3-bucket-public-read-prohibited 」および「s3-bucket-public-write-prohibited」を参照してください。
- AWS IAM Access Analyzer を使用すると、別の AWS アカウントから S3 リソースへのアクセスを許可するバケットまたは IAM ポリシーを確認するのに役立ちます。
- Amazon Macie を使用すると、バケットに保存されている機密データの識別、バケットへの幅広いアクセス、アカウント内の暗号化されていないバケットの識別を自動化できます。
- CloudTrail を CloudWatch や AWS Lambda などの他のサービスと併用すると、S3 リソースに対して特定のアクションが実行されたときに特定のプロセスを呼び出すことができます。詳細については、「CloudWatch イベントを使用して Amazon S3 オブジェクトレベルのオペレーションをログに記録する」を参照してください。
- ビジネスサポートプランまたはエンタープライズサポートプランをお持ちの場合は、AWS Trusted Advisor の S3 バケット権限チェックを使用できます。このチェックにより、オープンアクセス権限のあるバケットについて通知されます。
暗号化を使用してデータを保護してください
ユースケースで送信中に暗号化が必要な場合は、HTTPS プロトコルを使用します。これにより、Amazon S3 との間で送受信されるデータが暗号化されます。すべての AWS SDK と AWS ツールはデフォルトで HTTPS を使用します。
注: サードパーティのツールを使用して Amazon S3 を操作する場合は、開発者に問い合わせて、そのツールが HTTPS プロトコルもサポートしているかどうかを確認してください。
ユースケースで保存中のデータの暗号化が必要な場合は、サーバー側の暗号化 (SSE) を提供します。SSE オプションには、SSE-S3、SSE-KMS、または SSE-C が含まれます。バケットにオブジェクトを書き込むときに SSE パラメータを指定できます。SSE-S3 または SSE-KMS を使用してバケットのデフォルト暗号化を有効にすることもできます。
ユースケースでクライアント側の暗号化が必要な場合は、「クライアント側の暗号化によるデータの保護」を参照してください。
関連情報
他の AWS アカウントのユーザーに Amazon S3 バケットへのアクセスに MFA の使用を義務付けるにはどうすればよいですか?
関連するコンテンツ
- 質問済み 2ヶ月前lg...
- 質問済み 6年前lg...
- 質問済み 5年前lg...
- AWS公式更新しました 1年前
- AWS公式更新しました 4年前
- AWS公式更新しました 1年前