Google Cloud の組織のポリシーを使用すると、組織のリソースをプログラムで一元管理できます。組織ポリシー管理者は組織ポリシーを定義できます。組織ポリシーは、Google Cloud のリソース階層内の Google Cloud リソースやそれらのリソースの子孫に適用される、制約と呼ばれる一連の制限です。組織のポリシーは、組織レベル、フォルダレベル、またはプロジェクト レベルで適用できます。
組織のポリシーは、さまざまな Google Cloud サービスに事前に定義された制約を提供します。ただし、組織のポリシーで制限されている特定のフィールドをきめ細かく制御する必要がある場合は、カスタム制約を作成して、カスタム組織ポリシーでそれらのカスタム制約を適用することもできます。
ポリシーの継承
デフォルトでは、組織のポリシーは、そのポリシーを適用したリソースの子孫に継承されます。たとえば、フォルダにポリシーを適用した場合、そのフォルダ内のすべてのプロジェクトにそのポリシーが適用されます。この動作の詳細と変更方法については、階層評価ルールをご覧ください。
Google Cloud Armor でサポートされているリソース
Google Cloud Armor リソースでは、次のリソースとフィールドにカスタム制約を設定できます。
セキュリティ ポリシー:
compute.googleapis.com/SecurityPolicy
- 名前:
resource.name
- 説明:
resource.description
- ルール:
resource.rules[]
- ヘッダー アクション:
resource.headerAction
- 追加するリクエスト ヘッダー:
resource.headerAction.requestHeadersToAdds[]
- ヘッダー名:
resource.requestHeadersToAdds.requestHeadersToAdds[].headerName
- ヘッダー値:
resource.requestHeadersToAdds.requestHeadersToAdds[].headerValue
- ヘッダー名:
- マッチャー:
resource.rules[].match
- バージョン付き式:
resource.rules[].versionedExpr
- 構成:
resource.rules[].config
- ソース IP の範囲:
resource.rules[].config.srcIpRanges[]
- ソース IP の範囲:
- 式:
resource.rules[].expr
- 式のオプション:
resource.rules[].exprOptions
- reCAPTCHA オプション:
resource.rules[].exprOption.recaptchaOptions
- アクション トークンのサイトキー:
resource.rules[].exprOption.recaptchaOptions.actionTokenSiteKeys
- セッション トークンのサイトキー:
resource.rules[].exprOption.recaptchaOptions.sessionTokenSiteKeys
- reCAPTCHA オプション:
- ネットワーク マッチャー:
resource.rules[].networkMatch
- ユーザー定義フィールドの一致:
resource.rules[].userDefinedFieldMatch
- 名前:
resource.rules[].userDefinedFieldMatch.name
- 値:
resource.rules[].userDefinedFieldMatch.values
- 名前:
- ソース IP の範囲:
resource.rules[].srcIpRanges
- 送信先 IP 範囲:
resource.rules[].destIpRanges
- IP プロトコル:
resource.rules[].ipProtocols
- 送信元ポート:
resource.rules[].srcPorts
- 宛先ポート:
resource.rules[].destPorts
- 送信元リージョン コード:
resource.rules[].srcRegionCodes
- 送信元 ASN:
resource.rules[].srcAsns
- 事前構成された WAF 構成:
resource.rules[].preconfiguredWafConfig
- 除外:
resource.rules[].preconfiguredWafConfig.exclusions[]
- ターゲット ルールセット:
resource.rules[].preconfiguredWafConfig.exclusions[].targetRuleSet
- ターゲット ルール ID:
resource.rules[].preconfiguredWafConfig.exclusions[].targetRuleIds[]
- 除外するリクエスト ヘッダー:
resource.rules[].preconfiguredWafConfig.exclusions[].requestHeadersToExclude[]
- 値:
resource.rules[].preconfiguredWafConfig.exclusions[].requestHeadersToExclude[].val
- オペレーション:
resource.rules[].preconfiguredWafConfig.exclusions[].requestHeadersToExclude[].op
- 除外する Cookie をリクエスト:
resource.rules[].preconfiguredWafConfig.exclusions[].requestCookiesToExclude[]
- 値:
resource.rules[].preconfiguredWafConfig.exclusions[].requestCookiesToExclude[].val
- オペレーション:
resource.rules[].preconfiguredWafConfig.exclusions[].requestCookiesToExclude[].op
- 除外するリクエスト クエリ パラメータ:
resource.rules[].preconfiguredWafConfig.exclusions[].requestQueryParamsToExclude[]
- 値:
resource.rules[].preconfiguredWafConfig.exclusions[].requestQueryParamsToExclude[].val
- オペレーション:
resource.rules[].preconfiguredWafConfig.exclusions[].requestQueryParamsToExclude[].op
- 除外するリクエスト URI:
resource.rules[].preconfiguredWafConfig.exclusions[].requestUrisToExclude[]
- 値:
resource.rules[].preconfiguredWafConfig.exclusions[].requestUrisToExclude[].val
- オペレーション:
resource.rules[].preconfiguredWafConfig.exclusions[].requestUrisToExclude[].op
- ターゲット ルールセット:
- リダイレクト オプション:
resource.rules[].redirectOptions[]
- タイプ:
resource.rules[].redirectOptions[].type
- ターゲット:
resource.rules[].redirectOptions[].target
- レート制限オプション:
resource.rules[].rateLimitOptions[]
- レート上限しきい値:
resource.rules[].rateLimitOptions[].rateLimitThreshold
- 数:
resource.rules[].rateLimitOptions[].rateLimitThreshold.count
- 間隔(秒):
resource.rules[].rateLimitOptions[].rateLimitThreshold.intervalSec
- 数:
- コンフォーム アクション:
resource.rules[].rateLimitOptions[].conformAction
- 超過時のアクション:
resource.rules[].rateLimitOptions[].exceedAction
- リダイレクト オプションの超過:
resource.rules[].rateLimitOptions[].exceedRedirectOptions
- タイプ:
resource.rules[].rateLimitOptions[].exceedRedirectOptions.type
- ターゲット:
resource.rules[].rateLimitOptions[].exceedRedirectOptions.target
- タイプ:
- 超過時のアクションの RPC ステータス:
resource.rules[].rateLimitOptions[].exceedActionRpcStatus
- コード:
resource.rules[].rateLimitOptions[].exceedActionRpcStatus.code
- メッセージ:
resource.rules[].rateLimitOptions[].exceedActionRpcStatus.message
- コード:
- キーへの適用:
resource.rules[].rateLimitOptions[].enforceOnKey
- キー名への適用:
resource.rules[].rateLimitOptions[].enforceOnKeyName
- キー構成への適用:
resource.rules[].rateLimitOptions[].enforceOnKeyConfigs
- キータイプへの適用:
resource.rules[].rateLimitOptions[].enforceOnKeyConfigs.enforceOnKeyType
- キー名への適用:
resource.rules[].rateLimitOptions[].enforceOnKeyConfigs.enforceOnKeyName
- キータイプへの適用:
- 禁止しきい値:
resource.rules[].rateLimitOptions[].banThreshold
- 数:
resource.rules[].rateLimitOptions[].banThreshold.count
- 間隔(秒):
resource.rules[].rateLimitOptions[].banThreshold.intervalSec
- 数:
- 禁止の期間(秒):
resource.rules[].rateLimitOptions[].banDurationSec
- リダイレクト ターゲット:
resource.rules[].redirectTarget
- ルール番号:
resource.rules[].ruleNumber
- ヘッダー アクション:
- 適応型保護の構成:
resource.adaptiveProtectionConfig
- レイヤ 7 DDoS 防御構成:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig
- 有効化:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.enable
- ルールの公開設定:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.ruleVisibility
- しきい値の構成:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[]
- 名前:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[].name
- 自動デプロイの負荷しきい値:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[].autoDeployLoadThreshold
- 自動デプロイの信頼度のしきい値:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[].autoDeployConfidenceThreshold
- 影響を受けるベースラインの自動デプロイのしきい値:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[].autoDeployImpactedBaselineThreshold
- 自動デプロイの有効期限(秒):
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[].autoDeployExpirationSec
- 検出負荷しきい値:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[].detectionLoadThreshold
- 検出の絶対 QPS:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[].detectionAbsoluteQps
- ベースライン QPS に対する検出:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[].detectionRelativeToBaselineQps
- トラフィックの粒度構成:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[].trafficGranularityConfigs[]
- タイプ:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[].trafficGranularityConfigs[].type
- 値:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[].trafficGranularityConfigs[].value
- 各一意の値を有効にする:
resource.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[].trafficGranularityConfigs[].enableEachUniqueValue
- 名前:
- 自動デプロイ構成:
resource.adaptiveProtectionConfig.autoDeployConfig
- 負荷しきい値:
resource.adaptiveProtectionConfig.autoDeployConfig.loadThreshold
- 信頼度のしきい値:
resource.adaptiveProtectionConfig.autoDeployConfig.confidenceThreshold
- 影響を受けるベースラインしきい値:
resource.adaptiveProtectionConfig.autoDeployConfig.impactedBaselineThreshold
- 有効期限(秒):
resource.adaptiveProtectionConfig.autoDeployConfig.expirationSec
- レイヤ 7 DDoS 防御構成:
- 詳細オプションの設定:
resource.advancedOptionsConfig
- JSON 解析:
resource.advancedOptionsConfig,jsonParsing
- JSON カスタム構成:
resource.advancedOptionsConfig,jsonCustomConfig
- コンテンツ タイプ:
resource.advancedOptionsConfig,jsonCustomConfig.contentTypes[]
- ログレベル:
resource.advancedOptionsConfig.logLevel
- ユーザー IP リクエスト ヘッダー:
resource.advancedOptionsConfig.userIpRequestHeaders[]
- JSON 解析:
- DDoS 保護構成:
resource.ddosProtectionConfig
- DDoS 対策:
resource.ddosProtectionConfig.ddosProtection
- DDoS 対策:
- reCAPTCHA オプションの設定:
resource.recaptchaOptionsConfig
- リダイレクト サイトキー:
resource.recaptchaOptionsConfig.redirectSiteKey
- リダイレクト サイトキー:
- タイプ:
resource.type
- ユーザー定義フィールド:
resource.userDefinedFields[]
- 名前:
resource.userDefinedFields[].name
- ベース:
resource.userDefinedFields[].base
- オフセット:
resource.userDefinedFields[].offset
- サイズ:
resource.userDefinedFields[].size
- マスク:
resource.userDefinedFields[].mask
- 名前:
- 名前:
ネットワーク エッジ セキュリティ サービス:
compute.googleapis.com/NetworkEdgeSecurityService
- 名前:
resource.name
- 説明:
resource.description
- セキュリティ ポリシー:
resource.securityPolicy
- 名前:
カスタム制約の定義
カスタム制約は、組織のポリシーを適用しているサービスでサポートされるリソース、メソッド、条件、アクションによって定義されます。カスタム制約の条件は、Common Expression Language(CEL)を使用して定義されます。CEL を使用してカスタム制約で条件を作成する方法については、組織のポリシーの作成と管理の CEL セクションをご覧ください。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境でコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
組織リソースに対する組織のポリシー管理者(
roles/orgpolicy.policyAdmin
) -
制約をテストするには:
-
プロジェクトに対する Compute セキュリティ管理者 (
roles/compute.securityAdmin
) -
プロジェクトのサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)
-
プロジェクトに対する Compute セキュリティ管理者 (
-
orgpolicy.constraints.list
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
Google Cloud コンソールで、[組織のポリシー] ページに移動します。
ページの上部にあるプロジェクト選択ツールを選択します。
プロジェクト選択ツールから、組織のポリシーを設定するリソースを選択します。
[
カスタム制約] をクリックします。[表示名] ボックスに制約の名前を入力します。わかりやすい名前を入力してください。このフィールドの最大長は 200 文字です。 エラー メッセージで漏えいする可能性があるため、制約名には PII や機密データを使用しないでください。
[制約 ID] ボックスに、新しいカスタム制約の名前を入力します。カスタム制約は
custom.
で始まる必要があり、大文字、小文字、数字のみを含めることができます(例:custom.requireSecurityPolicyWithStandardJsonParsing
)。このフィールドの最大長は 70 文字です。接頭辞はカウントされません(例:organizations/123456789/customConstraints/custom.
)。[説明] ボックスに、ポリシー違反が発生したときにエラー メッセージとして表示される制約の説明を入力します。わかりやすい説明を入力してください。このフィールドの最大長は 2000 文字です。
[リソースの種類] ボックスで、制限するオブジェクトとフィールドを含む Google Cloud REST リソースの名前を選択します。例:
compute.googleapis.com/SecurityPolicy
[適用方法] で、REST
CREATE
メソッドのみに制約を適用するか、RESTCREATE
メソッドとUPDATE
メソッドの両方に制約を適用するかを選択します。条件を定義するには、[
条件を編集] をクリックします。[条件を追加] パネルで、サポートされているサービス リソースを参照する CEL 条件を作成します。このフィールドの最大長は 1000 文字です。
[保存] をクリックします。
[アクション] で、上記の条件が満たされた場合に評価された方法を許可するか拒否するかを選択します。
[制約を作成] をクリックします。
ORGANIZATION_ID
: 組織 ID(123456789
など)。CONSTRAINT_NAME
: 新しいカスタム制約に付ける名前。カスタム制約はcustom.
で始まる必要があります。含められるのは大文字、小文字、数字のみです(例:custom.requireSecurityPolicyWithStandardJsonParsing
)。このフィールドの最大長は 70 文字です。接頭辞はカウントされません(例:organizations/123456789/customConstraints/custom
)。RESOURCE_NAME
: 制限するオブジェクトとフィールドを含む Compute Engine API REST リソースの名前(URI ではない)。例:SecurityPolicy
METHOD1,METHOD2,...
: 制約を適用する RESTful メソッドのリスト。CREATE
、CREATE
、UPDATE
のいずれかです。CONDITION
: サポート対象のサービス リソースの表現に対して書き込まれる CEL 条件。このフィールドの最大長は 1,000 文字です。条件の書き込み先として使用できるリソースの詳細については、サポート対象のリソースをご覧ください。ACTION
:condition
が満たされている場合に実行するアクション。ALLOW
またはDENY
になります。DISPLAY_NAME
: 制約の名前。わかりやすい名前を入力してください。このフィールドの最大長は 200 文字です。DESCRIPTION
: ポリシー違反時にエラー メッセージとして表示される制約の説明。わかりやすい説明を入力してください。このフィールドの最大長は 2000 文字です。- Google Cloud コンソールで、[組織のポリシー] ページに移動します。
- プロジェクト選択ツールから、組織のポリシーを設定するプロジェクトを選択します。
- [組織のポリシー] ページのリストで制約を選択して、その制約の [ポリシーの詳細] ページを表示します。
- このリソースの組織のポリシーを構成するには、[ポリシーを管理] をクリックします。
- [ポリシーの編集] ページで、[親のポリシーをオーバーライドする] を選択します。
- [ルールの追加] をクリックします。
- [適用] セクションで、この組織のポリシーの適用を有効にするかどうかを選択します。
- 省略可: タグで組織のポリシーに条件を設定するには、[条件を追加] をクリックします。組織のポリシーに条件付きルールを追加する場合は、少なくとも 1 つは無条件のルールを追加する必要があります。そうしないとポリシーを保存できないのでご注意ください。詳細については、タグ付きの組織のポリシーの設定をご覧ください。
- カスタム制約の場合は、[変更内容をテスト] をクリックして、組織のポリシーの効果をシミュレートできます。詳細については、Policy Simulator で組織のポリシーの変更をテストするをご覧ください。
- 組織のポリシーを完成させて適用するには、[ポリシーを設定] をクリックします。ポリシーが有効になるまでに最大 15 分かかります。
-
PROJECT_ID
: 制約を適用するプロジェクト。 -
CONSTRAINT_NAME
: カスタム制約に定義した名前。例:
。custom.requireSecurityPolicyWithStandardJsonParsing
次の情報を含む
requireStandardJsonParsing.yaml
制約ファイルを作成します。name: organizations/ORGANIZATION_ID/customConstraints/custom.requireStandardJsonParsing resource_types: compute.googleapis.com/SecurityPolicy condition: "resource.advancedOptionsConfig.jsonParsing != 'STANDARD'" action_type: DENY method_types: [CREATE, UPDATE] display_name: Security policies must have standard JSON parsing enabled.
ORGANIZATION_ID
は、実際の組織 ID に置き換えます。カスタム制約を設定します。
gcloud org-policies set-custom-constraint requireStandardJsonParsing.yaml
次の例の情報を含む
requireStandardJsonParsing-policy.yaml
ポリシー ファイルを作成し、制約をプロジェクト レベルで適用します。この制約は、組織レベルで設定することも、フォルダレベルで設定することもできます。name: projects/PROJECT_ID/policies/custom.requireStandardJsonParsing spec: rules: – enforce: true
PROJECT_ID
は、実際のプロジェクト ID に置き換えます。ポリシーを適用します。
gcloud org-policies set-policy requireStandardJsonParsing-policy.yaml
制約をテストするには、JSON 解析フィールドを設定せずにセキュリティ ポリシーを作成します。
gcloud compute security-policies create my-policy \ --type=CLOUD_ARMOR
出力は次のようになります。
ERROR: (gcloud.compute.securityPolicies.create) Could not fetch resource: - Operation denied by custom org policy: [customConstraints/custom.requireStandardJsonParsing] : Security policies must have standard JSON parsing enabled.
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
必要なロール
Google Cloud Armor リソースの組織のポリシーを管理するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、Google Cloud Armor リソースの組織のポリシーを管理するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
Google Cloud Armor リソースの組織のポリシーを管理するには、次の権限が必要です。
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
カスタム制約を設定する
カスタム制約を作成し、Google Cloud コンソールまたは Google Cloud CLI を使用して組織のポリシーで使用するように設定できます。
コンソール
各フィールドに値を入力すると、このカスタム制約の YAML 構成が右側に表示されます。
gcloud
Google Cloud CLI を使用してカスタム制約を作成するには、YAML ファイルを作成します。
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME resource_types: compute.googleapis.com/RESOURCE_NAME method_types: – METHOD1 – METHOD2 condition: "CONDITION" action_type: ACTION display_name: DISPLAY_NAME description: DESCRIPTION
次のように置き換えます。
カスタム制約の作成方法については、カスタム制約の定義をご覧ください。
新しいカスタム制約の YAML ファイルを作成したら、組織内の組織のポリシーで使用できるように設定する必要があります。カスタム制約を設定するには、gcloud org-policies set-custom-constraint
コマンドを使用します。gcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH
は、カスタム制約ファイルのフルパスに置き換えます。たとえば、/home/user/customconstraint.yaml
になります。完了すると、カスタム制約が組織のポリシーとして Google Cloud 組織のポリシーのリストに表示されます。カスタム制約が存在することを確認するには、gcloud org-policies list-custom-constraints
コマンドを使用します。gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID
は、組織リソースの ID に置き換えます。詳細については、組織のポリシーの表示をご覧ください。カスタム制約を適用する
ブール型制約を適用するには、それを参照する組織のポリシーを作成し、それを Google Cloud リソースに適用します。Console
gcloud
ブール型制約を適用する組織のポリシーを作成するには、制約を参照するポリシー YAML ファイルを作成します。
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
次のように置き換えます。
制約を含む組織のポリシーを適用するには、次のコマンドを実行します。
gcloud org-policies set-policy POLICY_PATH
POLICY_PATH
は、組織のポリシーの YAML ファイルのパスに置き換えます。ポリシーが有効になるまでに最大 15 分かかります。例: すべてのセキュリティ ポリシーで標準 JSON パースを有効にすることを要求する制約を作成する
この制約により、標準の JSON パースが有効になっていない場合、セキュリティ ポリシーを作成できなくなります。
gcloud
料金
事前定義の組織のポリシーやカスタムの組織のポリシーを含め、組織のポリシー サービスは無料です。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-22 UTC。
-