このページでは、Cloud Storage に適用される組織のポリシーの制約に関する補足情報について説明します。制約を使用して、プロジェクト全体または組織全体にバケットおよびオブジェクトの動作を適用します。組織のポリシーの制約は、ブール型制約またはリスト型制約のいずれかです。
Cloud Storage の制約
次の制約を組織のポリシーに適用して、Cloud Storage に関連付けることが可能です。
公開アクセスの防止を適用する
制約名: constraints/storage.publicAccessPrevention
制約タイプ: boolean
リソースに publicAccessPrevention
制約を適用すると、そのリソースに含まれるすべてのバケットとオブジェクト(新規と既存の両方)で公開アクセスが制限されます。
publicAccessPrevention
の有効化または無効化が反映されるまでに 10 分ほどかかることがあります。
削除(復元可能)の保持期間
制約名: constraints/storage.softDeletePolicySeconds
制約タイプ: list
softDeletePolicySeconds
制約を適用する場合は、制約の一部として 1 つ以上の期間を指定します。設定したバケットの削除(復元可能)ポリシーには、指定された期間のいずれかを含める必要があります。新しいバケットを作成する場合や、既存のバケットの削除(復元可能)の保持期間(softDeletePolicy.retentionDuration
)を追加または更新する場合は、softDeletePolicySeconds
が必要です。ただし、それ以外の場合、既存のバケットには影響しません。
異なるリソースレベルで複数の softDeletePolicySeconds
制約を設定すると、これらの制約は階層的に適用されます。このため、上位層のポリシーも考慮されるように、inheritFromParent
フィールドを true
に設定することをおすすめします。
バケット保持ポリシーの期間(秒)
制約名: constraints/storage.retentionPolicySeconds
制約タイプ: list
retentionPolicySeconds
制約を適用する場合は、制約の一部として 1 つ以上の期間を指定します。設定したバケットの保持ポリシーには、指定された期間のいずれかを含める必要があります。retentionPolicySeconds
は新しいバケットを作成する場合に必要です。既存のバケットに対しては、保持期間の追加または更新を行う場合には必要ですが、それ以外の場合は必要ありません。
異なるリソースレベルで複数の retentionPolicySeconds
制約を設定すると、これらの制約は階層的に適用されます。このため、上位層のポリシーも考慮されるように、inheritFromParent
フィールドを true
に設定することをおすすめします。
均一なバケットレベルのアクセスを必須にする
制約名: constraints/storage.uniformBucketLevelAccess
制約タイプ: boolean
uniformBucketLevelAccess
制約を適用する場合は、新しいバケットで均一なバケットレベルのアクセス機能を有効にする必要があります。この機能を有効にしている既存のバケットではこの機能を無効にすることはできません。均一なバケットレベルのアクセスが無効になっている既存のバケットを有効にする必要はありません。
詳細な監査ロギングモード
制約名: constraints/gcp.detailedAuditLoggingMode
制約タイプ: boolean
detailedAuditLoggingMode
制約を適用する場合は、Cloud Storage オペレーションに関連する Cloud Audit Logs のログには、詳細なリクエスト情報とレスポンス情報が含まれます。この制約は、SEC Rule 17a-4(f)、CFTC Rule 1.31(c)-(d)、FINRA Rule 4511(c) などのさまざまなコンプライアンスが目標である場合は、バケットロックおよびオブジェクト保持ロックと組み合わせて使用することをおすすめします。
ログに記録される情報には、クエリ パラメータ、パスパラメータ、リクエスト本文パラメータが含まれます。ログでは、リクエストとレスポンスで機密情報に関連する部分は除外されます。たとえば、以下のものが除外されます。
- 認証情報(
Authorization
、X-Goog-Signature
、upload-id
など)。 - 暗号鍵の情報(
x-goog-encryption-key
など)。 - 未加工のオブジェクト データ。
この制約を使用する場合は、次の点に注意してください。
- 詳細なリクエスト情報とレスポンス情報が必ず返されるとは限りません。まれに、空のログが返されることがあります。
detailedAuditLoggingMode
を有効にすると、監査ログに保存されるデータ量が増加し、それがデータアクセス ログの Cloud Logging の料金に影響する可能性があります。detailedAuditLoggingMode
の有効化または無効化が実施されるまでに 10 分程度かかります。ログに記録されたリクエストとレスポンスは、JSON API のフィールド名と一致する汎用形式で記録されます。
認証タイプを制限する
制約名: constraints/storage.restrictAuthTypes
制約タイプ: list
restrictAuthTypes
制約を適用すると、制限付き認証タイプを使用して Cloud Storage リソースにアクセスするリクエストは、リクエストが有効であるかどうかにかかわらず失敗します。この制約は、規制要件がある場合や、データ セキュリティの強化が必要な場合におすすめします。
制限できる認証タイプは次のとおりです。
SERVICE_ACCOUNT_HMAC_SIGNED_REQUESTS
: サービス アカウントの HMAC キーで署名されたリクエストを制限します。USER_ACCOUNT_HMAC_SIGNED_REQUESTS
: ユーザー アカウントの HMAC キーで署名されたリクエストを制限します。in:ALL_HMAC_SIGNED_REQUESTS
: HMAC キーで署名されたリクエストを制限します。データ主権の要件を満たす必要がある場合は、HMAC で署名されたすべてのリクエストを制限することをおすすめします。
この制約を有効にすると、次のようになります。
Cloud Storage では、制限付き認証タイプで認証されるリクエストへのアクセスは制限されます。リクエストはエラー
403 Forbidden
で失敗します。リクエストの実行を事前に承認されたエンティティには、認証タイプが無効になっていることを示すエラー メッセージが表示されます。
HMAC キーが制限されている場合:
制約が適用された HMAC キーを、制約が適用されるリソースで作成したり、有効にすることはできません。HMAC キーの作成または有効化のリクエストは、エラー
403 Forbidden
で失敗します。既存の HMAC キーは残りますが、使用できなくなります。無効化または削除は可能ですが、再度有効にすることはできません。
restrictAuthTypes
制約を使用する場合は、HMAC 認証に依存する既存のリソースに注意してください。たとえば、Amazon Simple Storage Service(Amazon S3)から移行した場合、アプリケーションは HMAC キーを使用して Cloud Storage へのリクエストを認証する可能性があります。Cloud Monitoring の指標 storage.googleapis.com/authn/authentication_count
を使用すると、リクエストの認証に HMAC キーが使用された回数を追跡できます。
暗号化されていない HTTP リクエストを制限する
制約名: constraints/storage.secureHttpTransport
制約タイプ: boolean
secureHttpTransport
制約を適用すると、Cloud Storage リソースに対する暗号化されていない HTTP アクセスがすべて拒否されます。
- デフォルトでは、Cloud Storage XML API は暗号化されていない HTTP アクセスを許可します。
CNAME
リダイレクトは暗号化されていない HTTP アクセスのみをサポートします。
追加の制約
次の組織のポリシーの制約は、Google Cloud 全体でより一般的に適用されますが、多くの場合、Cloud Storage サービスに適用されます。
constraints/gcp.restrictNonCmekServices
: 新しいオブジェクトと書き換えられたオブジェクトを顧客管理の暗号鍵を使用して暗号化する必要があり、新しいバケットで Cloud KMS 鍵をデフォルトの暗号鍵として設定する必要があります。constraints/gcp.restrictCmekCryptoKeyProjects
: Cloud Storage へのリクエストは、リクエストに顧客管理の暗号鍵が含まれ、その鍵が制約で指定されたプロジェクトに属していない場合、拒否されます。同様に、オブジェクトの作成または書き換えのリクエストは、オブジェクトがバケットのデフォルトの暗号鍵で暗号化され、その鍵が制約で指定されたプロジェクトに属していない場合、拒否されます。constraints/gcp.restrictTLSVersion
: Transport Layer Security(TLS)1.0 または 1.1 を使用して行われたリクエストによる Cloud Storage へのアクセスは阻止されます。
組織のポリシーの制約を条件付きで許可または拒否する
タグを使用すると、Cloud Storage バケットに特定のタグがあるかどうかに基づいて、組織のポリシーを条件付きで許可または拒否できます。詳しい手順については、タグを使用した組織のポリシーの設定をご覧ください。
次のステップ
- 組織のポリシーに適用されるリソース階層について学習します。
- Google Cloud コンソールでの制約と組織のポリシーの操作方法については、組織のポリシーの作成と管理をご覧ください。
- gcloud CLI で制約と組織のポリシーを操作する手順については、制約の使用をご覧ください。
- Cloud Storage のカスタム制約について学習します。
projects.setOrgPolicy
などの関連する API メソッドについては、Resource Manager API のリファレンス ドキュメントをご覧ください。