翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon S3 バケットの露出の修正
AWS Security Hub は、Amazon Simple Storage Service (S3) バケットの公開結果を生成できます。
Security Hub コンソールでは、露出検出結果に関連する Amazon S3 バケットとその識別情報が、検出結果詳細の [リソース] セクションに一覧表示されます。プログラムにより、Security Hub CSPM API の GetFindingsV2オペレーションを使用してリソースの詳細を取得できます。
露出の検出結果に関連するリソースを特定したら、不要なリソースを削除できます。不要なリソースを削除すると、露出プロファイルと AWS コストを削減できます。リソースが不可欠な場合は、以下の推奨される修復手順に従ってリスクを軽減します。修復トピックは、特性のタイプに基づいて分割されます。
1 つの露出の検出結果には、複数の修復トピックで特定された問題が含まれます。逆に、1 つの修復トピックだけに対処することで、露出の検出結果に対処し、その重要度レベルを下げることができます。リスク修復へのアプローチは、組織の要件とワークロードによって異なります。
注記
このトピックで提供される修復ガイダンスでは、他の AWS リソースで追加の相談が必要になる場合があります。
目次
Amazon S3 バケットの設定ミス特性
Amazon S3 バケットの設定ミス特性と推奨される修復手順は次のとおりです。
Amazon S3 バケットのバージョニングが無効になっている
Amazon S3 バージョニングにより、同じバケット内で一つのオブジェクトの複数のバリアントを保持できます。バージョニングを無効にすると、Amazon S3 は各オブジェクトの最新バージョンのみを保存します。つまり、オブジェクトが誤って、または悪意のある方法で削除または上書きされた場合、復元することができなくなります。バージョニングが有効なバケットは、偶発的な削除、アプリケーション障害、あるいはデータの不正な変更や削除につながるランサムウェア攻撃などのセキュリティインシデントに対する保護を提供します。セキュリティのベストプラクティスに従って、再作成が困難または不可能な重要データを含むバケットのバージョニングを有効にすることをお勧めします。
-
バージョニングを有効にする – 特定のバケットで Amazon S3 バージョニングを有効にするには、「Amazon Simple Storage Service ユーザーガイド」の「バケットでのバージョニングの有効化」を参照してください。バージョニングを有効にする際は、ストレージを管理するライフサイクルルールの実装を検討してください。バージョニングを有効にするとオブジェクトの複数のコピーが保持されるためです。
Amazon S3 バケットで Object Lock が無効になっている場合
Amazon S3 Object Lock は、Amazon S3 オブジェクトの Write-Once-Read-Many (WORM) モデルを提供し、一定期間または無期限に削除または上書きされるのを防ぎます。Object Lock を無効にすると、オブジェクトが偶発的または悪意のある削除、変更、またはランサムウェアによる暗号化に対して脆弱になる可能性があります。Object Lock は、イミュータブルなデータストレージを要求する規制要件を守り、データの暗号化を企てるランサムウェアなどの高度な脅威からの保護を提供するために特に重要です。Object Lock を有効にすると、データ保護の追加レイヤーとしての保持ポリシーを適用し、重要データのイミュータブルなバックアップ戦略を構築できます。セキュリティのベストプラクティスに従って、オブジェクトに対する悪意のある変更を防ぐために Object Lock を有効にすることをお勧めします。
-
Object Lock は新しいバケットの作成時にのみ有効にできるため、Object Lock を有効にした上で新しいバケットを作成する必要があります。大規模な移行の場合は、バッチオペレーションを使用してオブジェクトを新しいバケットにコピーすることを検討してください。オブジェクトをロックする前に、バケットで Amazon S3 バージョニングと Object Lock を有効化する必要があります。Object Lock は新しいバケットでのみ有効化できるため、Object Lock が有効になっている新しいバケットに既存のデータを移行する必要があります。Amazon S3 オブジェクトロックの設定 – バケットでオブジェクトロックを設定する方法については、Amazon Simple Storage Service ユーザーガイドの「Amazon Amazon S3 オブジェクトロックの設定」を参照してください。Object Lock を設定したら、環境に応じて適切な保持モードを選択します。
Amazon S3 バケットは保管時に AWS KMS キーで暗号化されません
Amazon S3 は、すべての新しいバケットに対するデフォルトレベルの暗号化として、Amazon S3 マネージドキーによるサーバー側の暗号化を適用します。Amazon S3 マネージドキーは強力な暗号化保護を提供しますが、 AWS Key Management Service キーと同じレベルのアクセスコントロールおよび監査機能を提供するわけではありません。KMS キーを使用した場合、オブジェクトにアクセスするには、Amazon S3 バケットと、オブジェクトの暗号化に使用した KMS キーの両方に対するアクセス許可が必要になります。これは、暗号化されたオブジェクトにアクセスできるユーザーをきめ細かく制御し、暗号化キーの使用状況を包括的に監査する必要がある機密データにとって特に重要です。セキュリティのベストプラクティスに従って、機密データを含むバケットの暗号化、あるいは厳格なコンプライアンス要件がある環境については KMS キーの使用をお勧めします。
-
Amazon S3 バケットキーの設定
新しいオブジェクトに Amazon S3 バケットキーを使用するようにバケットを設定するには、「Amazon Simple Storage Service ユーザーガイド」の「新しいオブジェクトで SSE−KMS の S3 バケットキーを使用するようにバケットを設定する」を参照してください。既存のオブジェクトを暗号化する方法については、 AWS ストレージブログのAmazon S3バッチオペレーションによるオブジェクトの暗号化
」を参照してください。
AWS KMS 暗号化を実装するときは、次の点を考慮してください。
-
キー管理 – AWS マネージドキーとカスタマーマネージドキー (CMK) のどちらを使用するかを決定します。CMK では、キーのライフサイクルと使用状況をユーザーが完全に管理できます。これら 2 種類のキーの違いの詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS KMS キー」を参照してください。
-
キーローテーション – 追加のセキュリティ対策として、KMS キーの自動キーローテーションを有効にできます。詳細については、「AWS Key Management Service デベロッパーガイド」の「自動キーローテーションの有効化」を参照してください。
バージョニングされた Amazon S3 バケットで多要素認証 (MFA) 削除が無効になっている場合
多要素認証 (MFA) 削除は、Amazon S3 バケットに追加のセキュリティ層を提供します。多要素認証 (MFA) 削除を有効にすると、データ削除等の破壊的な Amazon S3 オペレーションには多要素認証が必要になります。MFA 削除を無効にすると、適切なアクセス許可を持つユーザーであれば、追加の認証チャレンジなしで、バケットのオブジェクトバージョンを完全に削除したり、バージョニングを停止することが可能になります。MFA 削除を有効にすることで、データを不正または偶発的な削除から保護し、ランサムウェア攻撃、内部脅威、運用エラーに対する保護を強化できます。MFA 削除は、不正な削除から保護する必要がある重要なデータや、コンプライアンス上取り扱いに注意が必要なデータを含むバケットの保護に特に重要です。セキュリティのベストプラクティスに従って、Amazon S3 バケットの MFA を有効にすることをお勧めします。
-
MFA タイプの確認
AWS は、次の MFA タイプをサポートしています。通常、物理デバイスによる認証がより厳格なセキュリティ保護を提供しますが、どんなタイプの MFA であっても MFA を無効にするよりは安全です。
-
リソースポリシーレベルでの MFA の適用
バケットポリシーに
aws:MultiFactorAuthAge条件キーを使用することで、機密性の高いオペレーションに対する MFA を要求します。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「Requiring MFA」を参照してください。 -
MFA を有効にする
MFA 削除を有効にするには、まず Amazon S3 バケットでバージョニングが有効になっていることを確認します。MFA 削除は、バージョニングが有効になっているバケットでのみサポートされます。Amazon S3 バージョニングを有効にする方法については、「Amazon Simple Storage Service ユーザーガイド」の「バケットでのバージョニングの有効化」を参照してください。MFA 削除は、Amazon S3 コンソールからは有効化できません。Amazon S3 API または AWS CLIを使用する必要があります。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「MFA 削除の設定」を参照してください。
Amazon S3 バケットは、他の AWS アカウントのプリンシパルにバケットのアクセス許可の変更を許可します。
Amazon S3 バケットポリシーは、バケットやオブジェクトへのアクセスを管理します。バケットポリシーが他の AWS アカウントのプリンシパルにバケットのアクセス許可の変更を許可する場合、権限のないユーザーはバケットを再設定できます。外部プリンシパル認証情報が侵害された場合、権限のないユーザーはバケットを制御でき、データ侵害やサービスの中断につながる可能性があります。標準のセキュリティ原則に従って、 AWS では、アクセス許可管理アクションを信頼できるプリンシパルのみに制限することをお勧めします。
-
バケットポリシーの確認と識別
公開で、ARN フィールドで Amazon S3 バケットを識別します。Amazon S3 コンソールでバケットを選択し、[アクセス許可] タブに移動してバケットポリシーを確認します。バケットにアタッチされているアクセス許可ポリシーを確認します。プリンシパルステートメントに記載するように、
s3:PutBucketPolicy, s3:PutBucketAcl, s3:DeleteBucketPolicy, s3:*などのアクションを付与するポリシーステートメント、またはアカウント外のプリンシパルへのアクセスを許可するポリシーステートメントを探します。 -
バケットポリシーの変更
バケットポリシーを変更して、他の AWS アカウントに付与されたアクションを削除または制限します。
-
外部アカウントにアクセス許可管理アクションを付与するポリシーステートメントを削除します。
-
クロスアカウントアクセスが必要な場合は、広範なアクセス許可
(s3:*)を、バケットアクセス許可管理を含まない特定のアクションに置き換えます。
バケットポリシーの変更については、Amazon Simple Storage Service ユーザーガイドのAmazon S3コンソールを使用したバケットポリシーの追加」を参照してください。
-
Amazon S3 バケットの到達可能性特性
Amazon S3 バケットの到達可能性特性と推奨される修復手順は次のとおりです。
Amazon S3 バケットがパブリックアクセス可能な場合
デフォルトでは Amazon S3 バケットとオブジェクトはプライベートですが、さまざまな設定によりパブリックアクセスの許可は可能です。バケットポリシー、アクセスポイントポリシー、またはオブジェクトのアクセス許可を変更してパブリックアクセスを許可すると、機密データが露出されるリスクが発生します。
-
バケットの評価
組織のポリシー、コンプライアンス要件、またはデータ分類に基づいて、バケットをプライベートにできるかどうかを評価します。パブリックまたは他の にバケットアクセスを許可する予定がない場合は AWS アカウント、残りの修復手順に従ってください。
-
バケットをプライベートに設定
Amazon S3 バケットをプライベートアクセスに設定するには、次のいずれかのオプションを選択します。
アカウントレベル – アカウントレベルの設定を使用してアカウント内のすべてのバケットのパブリックアクセスをブロックするには、「Amazon Simple Storage Service ユーザーガイド」の「カウントのブロックパブリックアクセス設定の構成」を参照してください。
バケットレベル – 特定のバケットのパブリックアクセスをブロックするには、yourAmazon S3buckets」を参照してください。
バケット ACL またはポリシー – バケットアクセスコントロールリスト (ACL)、バケットポリシー、マルチリージョンアクセスポイント (MRAP) ポリシー、またはアクセスポイントポリシーを変更してバケットへのパブリックアクセスを削除するには、「Amazon Simple Storage Service ユーザーガイド」の「バケットアクセスの確認と変更」を参照してください。アカウントレベルまたはバケットレベルでパブリックアクセスをブロックすると、それらのブロックはパブリックアクセスを許可するポリシーよりも優先されます。
Amazon S3 バケットがパブリック読み取りアクセス可能な場合
パブリック読み取りアクセス可能な Amazon S3 バケットでは、インターネット上のすべてのユーザーがバケットの内容を閲覧できます。これはパブリックアクセス向けのウェブサイトまたは共有リソースでは必要な場合がありますが、バケットに機密データが含まれている場合はセキュリティリスクが発生します。パブリック読み取りアクセスは不正な閲覧やダウンロードを引き起こす可能性があり、機密データがそのようなバケットに保存されるとデータ侵害につながります。標準のセキュリティ原則に従って、 AWS は Amazon S3 バケットへのアクセスを必要なユーザーとシステムに制限することをお勧めします。
-
バケットレベルでのパブリックアクセスのブロック
Amazon S3 は、バケットレベルとアカウントレベルの両方で、バケットポリシーや ACL に関わらずパブリックアクセスを禁止するよう設定できる、パブリックアクセスブロック設定を提供しています。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「Amazon S3 ストレージへのパブリックアクセスをブロックする」を参照してください。パブリックアクセスをブロックしたら、バケットのアクセスコントロール設定を確認して、アクセス要件と一致していることを確認します。次に、Amazon S3 バケットポリシーを確認して、どのユーザーがバケットにアクセスできるかを明示的に定義します。バケットポリシーの例については、「Amazon Simple Storage Service ユーザーガイド」の「Amazon S3 バケットポリシーの例」を参照してください。
-
代替アクセス方法
パブリック読み取りアクセスが必要な場合は、より安全な代替方法の使用を検討してください。
-
CloudFront – CloudFront でオリジンアクセスアイデンティティ (OAI) またはオリジンアクセスコントロール (OAC) を使用して、プライベート Amazon S3 バケットからの読み取りアクセスを許可します。別の方法として、Amazon S3 バケットへの直接アクセスを制限しながら、CloudFront を介してコンテンツをパブリックアクセス可能にすることができます。詳細については、「Amazon CloudFront デベロッパーガイド」の「Amazon S3 オリジンへのアクセスを制限する」を参照してください。
-
署名付き URL – 特定のオブジェクトへの一時的なアクセスには、署名付き URL を使用します。詳細については、Amazon CloudFront デベロッパーガイド」のURLs を使用したオブジェクトの共有」を参照してください。
-
Amazon S3 バケットが書き込みアクセス可能な場合
パブリック書き込みアクセス可能な Amazon S3 バケットでは、インターネット上のすべてのユーザーがバケット内のオブジェクトをアップロード、変更、または削除できます。これにより、有害なファイルのアップロード、既存のファイルの変更、データの削除など、重大なセキュリティリスクが発生します。パブリック書き込みアクセスは、攻撃者に悪用され得るセキュリティ脆弱性を構築します。標準のセキュリティ原則に従って、 AWS は Amazon S3 バケットへの書き込みアクセスを必要なユーザーとシステムのみに制限することをお勧めします。
-
アカウントおよびバケットレベルでのパブリックアクセスのブロック
Amazon S3 は、バケットレベルとアカウントレベルの両方で、バケットポリシーや ACL に関わらずパブリックアクセスを禁止するよう設定できる、パブリックアクセスブロック設定を提供しています。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「Amazon S3 ストレージへのパブリックアクセスをブロックする」を参照してください。
-
バケットポリシーの変更
パブリック書き込みアクセスを削除するアプローチの詳細については、バケットポリシーを確認してください。
s3:PutObject、s3:DeleteObject、またはs3:*で検索できます。バケットポリシー管理の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「Amazon S3 のバケットポリシー」を参照してください。 -
代替アクセス方法
パブリック読み取りアクセスが必要な場合は、より安全な代替方法の使用を検討してください。
-
CloudFront – CloudFront でオリジンアクセスアイデンティティ (OAI) またはオリジンアクセスコントロール (OAC) を使用して、プライベート Amazon S3 バケットからの読み取りアクセスを許可します。別の方法として、Amazon S3 バケットへの直接アクセスを制限しながら、CloudFront を介してコンテンツをパブリックアクセス可能にすることができます。詳細については、「Amazon CloudFront デベロッパーガイド」の「Amazon S3 オリジンへのアクセスを制限する」を参照してください。
-
署名付き URL – 特定のオブジェクトへの一時的なアクセスには、署名付き URL を使用します。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「署名付き URL を使用したオブジェクトの共有」を参照してください。
-
Amazon S3 アクセスポイントでパブリックアクセス設定が有効になっている場合
Amazon S3 アクセスポイントは、Amazon S3 バケット内の共有データセットへのカスタマイズされたアクセスを提供します。アクセスポイントのパブリックアクセスを有効にすると、インターネット上の誰でもデータにアクセスできるようになります。は、標準のセキュリティ原則に従って、Amazon S3 アクセスポイントへのパブリックアクセスを制限することを AWS 推奨しています。
-
パブリックアクセスブロックを有効にした新しいアクセスポイントの作成
Amazon S3 は、現在、アクセスポイントの作成後におけるアクセスポイントのパブリックアクセスブロック設定の変更をサポートしていません。アクセスポイントの作成の詳細については、Amazon Simple Storage Service ユーザーガイドの「汎用バケットのアクセスポイントへのパブリックアクセスの管理」を参照してください。アクセスポイントへのパブリックアクセスの管理の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「汎用バケットのアクセスポイントの作成」を参照してください。
Amazon S3 バケットの機密データ特性
Amazon S3 バケットの機密データ特性と推奨される修復手順は次のとおりです。
Amazon S3 バケットの機密データ特性
Macie が Amazon S3 バケット内の機密データを特定すると、即時の対応が必要な潜在的なセキュリティ露出およびコンプライアンス露出を提示します。
機密データには以下が含まれます。
-
認証情報
-
個人を特定できる情報
-
財務情報
-
保護が必要な機密コンテンツ
機密データが設定ミスや不正アクセスによって露出すると、コンプライアンス違反、データ侵害、ID の盗み取り、または財務上の損失につながる可能性があります。セキュリティのベストプラクティスに従って、 は Amazon S3 バケット内のデータの適切な分類と機密データの継続的なモニタリング AWS を推奨します。
機密データ向けコントロールの実装
露出の検出結果で、[リソースを開く] を選択します。検出された機密データのタイプとバケット内の場所を確認します。Macie の検出結果の解釈については、「Amazon Macie ユーザーガイド」の「Macie の検出結果のタイプ」を参照してください。
検出された機密データのタイプに基づいて、適切なセキュリティコントロールを実装します。
-
バケットへのアクセス制限 – バケットのアクセス許可をレビューして、最小特権の原則に従っているかどうかを確認します。IAM ポリシー、バケットポリシー、および ACL を使用してアクセスを制限します。詳細については、「Amazon Simple Notification Service ユーザーガイド」の「Amazon S3 での Identity and Access Management」を参照してください。
-
サーバー側の暗号化を有効にする – KMS キーによるサーバー側の暗号化を有効にして、保護を強化します。詳細については、Amazon Simple Storage Service ユーザーガイド AWS の「KMS キーによるサーバー側の暗号化の使用 (SSE-KMS)」を参照してください。
-
Use AWS Glue DataBrew – データの準備とクリーニングGlue DataBrewに使用します。詳細については、「AWS Glue DataBrew デベロッパーガイド」の「AWS Glue DataBrewとは」を参照してください。