このページでは、Cloud SQL インスタンスでカスタム制約を作成、設定、管理する方法について説明します。カスタムの組織のポリシーの概要については、カスタムの組織のポリシーをご覧ください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- [IAM と管理] ページから、組織ポリシー管理者ロール(
roles/orgpolicy.policyAdmin
)をユーザー アカウントまたはサービス アカウントに追加します。 - この操作を行う前に、制限事項をご覧ください。
カスタム制約でサポートされているフィールド
次のフィールドにカスタム制約を設定できます。
フィールド | 使用例 |
SqlDatabaseVersion | 特定のデータベース バージョンの使用を強制する |
region | インスタンスの作成を特定のリージョンに制限する |
availabilityType | 高可用性を適用する |
ipConfiguration > pscConfig > allowedConsumerProjects | PSC でコンシューマー プロジェクトの許可リストを特定のプロジェクトに制限する |
ipConfiguration > sslMode | SSL モードを ENCRYPTED_ONLY または TRUSTED_CLIENT_CERTIFICATE_REQUIRED に適用します。Google Cloud コンソールで Cloud SQL インスタンスを作成するときに SSL モードを選択することはできません。したがって、このカスタムの組織のポリシーを作成する場合は、gcloud CLI、API、または Terraform を使用して Cloud SQL インスタンスを作成する必要があります。 |
dataDiskType | SSD または HDD の使用を強制する |
backupConfiguration > location | 自動バックアップのロケーションを特定のロケーションに制限する |
backupConfiguration > pointInTimeRecoveryEnabled | すべてのインスタンスで PITR を有効にする |
backupConfiguration > transactionLogRetentionDays | すべてのインスタンスで、トランザクション ログの保持に特定の保持期間を使用するように強制する |
backupConfiguration > backupRetentionSettings > retentionUnit | すべてのバックアップに保持日数を適用する。 |
passwordValidationPolicy > minLength | 最小パスワード長のパスワード ポリシーを適用する。 |
passwordValidationPolicy > complexity | 複雑さに関するパスワード ポリシーを適用する。 |
passwordValidationPolicy > reuseInterval | 特定の再利用間隔のパスワード ポリシーを適用する |
passwordValidationPolicy > disallowUsernameSubstring | パスワードとしてユーザー名を許可しないパスワード ポリシーを適用する |
Edition | すべてのインスタンスに Enterprise Plus エディションの使用を強制する |
connectorEnforcement | すべての接続で Cloud SQL コネクタの使用を必須にする |
dataCacheConfig | すべてのインスタンスでデータ キャッシュの使用を必須にする |
カスタム制約の作成と設定
カスタム制約は、組織のポリシーを適用しているサービスでサポートされるリソース、メソッド、条件、アクションを使用して YAML ファイルで定義されます。カスタム制約の条件は、Common Expression Language(CEL)を使用して定義されます。CEL を使用してカスタム制約で条件を作成する方法については、Common Expression Language をご覧ください。
コンソール
Google Cloud コンソールで、[組織のポリシー] ページに移動します。
ページの上部にあるプロジェクト選択ツールを選択します。
プロジェクト選択ツールから、組織のポリシーを設定するリソースを選択します。
[
カスタム制約] をクリックします。[表示名] ボックスに、制約の名前を入力します。このフィールドの最大長は 200 文字です。
[制約 ID] ボックスに、新しいカスタム制約の名前を入力します。カスタム制約は
custom.
で始まる必要があり、大文字、小文字、数字のみを含めることができます(例:custom.requireCloudSqlPasswordMinLength
)。このフィールドの最大長は 70 文字です。接頭辞はカウントされません(例:organizations/123456789/customConstraints/custom.
)。[説明] ボックスに、ポリシー違反が発生したときにエラー メッセージとして表示される制約の説明を入力します。わかりやすい説明を入力してください。このフィールドの最大長は 2,000 文字です。
[リソースの種類] ボックスで、制限するオブジェクトとフィールドを含む Google Cloud REST リソースの名前を選択します(例:
sqladmin.googleapis.com/Instance
)。リソースタイプごとに最大 20 個のカスタム制約を設定できます。すでに 20 個のカスタム制約があるリソースタイプにカスタム制約を作成しようとすると、オペレーションは失敗します。[適用方法] で、REST
CREATE
メソッドに制約を適用するのか、またはCREATE
メソッドとUPDATE
メソッドの両方に制約を適用するのかを選択します。[条件を編集] をクリックして、次の操作を行います。
[条件を追加] パネルで、サポートされているサービス リソースを参照する CEL 条件を作成します(例:
resource.settings.passwordValidationPolicy.minLength > 10
)。このフィールドの最大長は 1,000 文字です。CEL の使用方法の詳細については、Common Expression Language をご覧ください。カスタム制約で使用できるサービス リソースの詳細については、カスタム制約でサポートされているサービスをご覧ください。[保存] をクリックします。
[アクション] で、上記の条件が満たされた場合に評価された方法を許可するか拒否するかを選択します。
拒否: 条件が true と評価された場合に、リソースを作成または更新するオペレーションをブロックします。
許可: 条件が true と評価された場合に、リソースを作成または更新するオペレーションが許可されます。条件に明示的にリストされているケースを除き、他のすべてのケースはブロックされます。
[制約を作成] をクリックします。
各フィールドに値を入力すると、このカスタム制約の YAML 構成が右側に表示されます。
gcloud
カスタム制約の YAML ファイルを作成するには、次の形式を使用します。
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- container.googleapis.com/RESOURCE_NAME
methodTypes:
- CREATE
- UPDATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
次のように置き換えます。
ORGANIZATION_ID
: 組織 ID(123456789
など)。CONSTRAINT_NAME
: 新しいカスタム制約に付ける名前。カスタム制約はcustom.
で始まる必要があり、大文字、小文字、数字のみを含めることができます(例: custom.enableGkeAutopilot.)。このフィールドの最大長は 70 文字です。接頭辞はカウントされません(例:organizations/123456789/customConstraints/custom
)。RESOURCE_NAME
: 制限するオブジェクトとフィールドを含む GKE API REST リソースの名前(URI ではない)。例:Cluster
CONDITION
: サポート対象のサービス リソースの表現に対して書き込まれる CEL 条件。このフィールドの最大長は 1,000 文字です。ACTION
:condition
が満たされている場合に実行するアクション。ALLOW
またはDENY
になります。拒否: 条件が true と評価された場合に、リソースを作成または更新するオペレーションをブロックします。
許可: 条件が true と評価された場合に、リソースを作成または更新するオペレーションが許可されます。条件に明示的にリストされているケースを除き、他のすべてのケースはブロックされます。
DISPLAY_NAME
: 制約の名前。このフィールドの最大長は 200 文字です。DESCRIPTION
: ポリシー違反時にエラー メッセージとして表示される制約の説明。このフィールドの最大長は 2,000 文字です。
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 では、ユーザー リクエストが許可されているかどうかを評価する際に、カスタム制約を最初にチェックします。いずれかのカスタムの組織のポリシーがリクエストを拒否すると、そのリクエストは承認されません。次に、Google Cloud は、そのリソースに適用されている事前定義の組織のポリシーを確認します。
ブール型制約を適用するには、それを参照する組織のポリシーを作成し、それを Google Cloud リソースに適用します。コンソール
ブール型制約を適用するには、次のようにします。
- Google Cloud コンソールで、[組織のポリシー] ページに移動します。
- ページの上部にあるプロジェクト選択ツールを選択します。
- プロジェクト選択ツールから、組織のポリシーを設定するプロジェクトを選択します。
- [組織のポリシー] ページのリストから制約を選択します。その制約の [ポリシーの詳細] ページが表示されます。
- このリソースの組織のポリシーを構成するには、[ポリシーを管理] をクリックします。
- [ポリシーの編集] ページで、[Override parent's policy] を選択します。
- [ルールを追加] をクリックします。
- [適用] で、この組織のポリシーの適用を有効にするかどうかを選択します。
- タグで組織のポリシーに条件を設定するには、[条件を追加] をクリックします。組織のポリシーに条件付きルールを追加する場合は、少なくとも 1 つは無条件のルールを追加する必要があります。そうしないとポリシーを保存できないのでご注意ください。詳細については、タグを使用した組織のポリシーの設定をご覧ください。
- カスタム制約の場合は、[変更内容をテスト] をクリックして、組織のポリシーの効果をシミュレートできます。詳細については、Policy Simulator で組織のポリシーの変更をテストするをご覧ください。
- 組織のポリシーを完成させて適用するには、[ポリシーを設定] をクリックします。ポリシーが有効になるまでに最長 15 分かかります。
gcloud
ブール型制約を適用する組織のポリシーを作成するには、制約を参照するポリシー YAML ファイルを作成します。
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
次のように置き換えます。
-
PROJECT_ID
: 制約を適用するプロジェクト。 -
CONSTRAINT_NAME
: カスタム制約に定義した名前。たとえば、custom.enableGkeAutopilot
のようにします。
制約を含む組織のポリシーを適用するには、次のコマンドを実行します。
gcloud org-policies set-policy POLICY_PATH
POLICY_PATH
は、組織のポリシーの YAML ファイルのパスに置き換えます。ポリシーが有効になるまでに最長 15 分かかります。
カスタム制約を更新する
カスタム制約を更新するには、Google Cloud コンソールで制約を編集するか、新しい YAML ファイルを作成して、gcloud CLI コマンド set-custom-constraint
を再度使用します。カスタム制約に対してバージョニングは実行されないため、この操作を行うと、既存のカスタム制約が上書きされます。カスタム制約がすでに適用されている場合、更新されたカスタム制約はすぐに有効になります。
コンソール
Google Cloud コンソールで [組織のポリシー] ページに移動します。
ページの上部にあるプロジェクト選択ツールを選択します。
プロジェクト選択ツールから、組織のポリシーを更新するリソースを選択します。
[組織のポリシー] ページのリストから、編集する制約を選択します。その制約の [ポリシーの詳細] ページが表示されます。
[
制約を編集] をクリックします。表示名、説明、適用方法、条件、アクションを変更します。制約を作成した後で、制約 ID またはリソースタイプを変更することはできません。
[変更を保存] をクリックします。
gcloud
gcloud CLI を使用して既存のカスタム制約を編集するには、変更する内容を含む新しい YAML ファイルを作成します。
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- RESOURCE_NAME
methodTypes:
- METHOD1
- METHOD2
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
次のように置き換えます。
ORGANIZATION_ID
: 組織 ID(123456789
など)。CONSTRAINT_NAME
: 新しいカスタム制約に付ける名前。カスタム制約はcustom.
で始める必要があります。また、使用できるのは、大文字、小文字、数字のみです(例:custom.disableGkeAutoUpgrade
)。このフィールドの最大長は 70 文字です。接頭辞はカウントされません(例:organizations/123456789/customConstraints/custom.
)。RESOURCE_NAME
: 制限するオブジェクトとフィールドを含む Google Cloud REST リソースの完全修飾名。例:container.googleapis.com/NodePool
カスタム制約で使用できるサービス リソースの詳細については、カスタム制約でサポートされているサービスをご覧ください。METHOD1,METHOD2
: 制約を適用する RESTful メソッドのリスト。CREATE
、CREATE
、UPDATE
のいずれかです。 すべての Google Cloud サービスが両方のメソッドをサポートしているわけではありません。各サービスでサポートされているメソッドを確認するには、サポートされているサービスをご覧ください。CONDITION
: サポートされているサービス リソースを参照する CEL 条件(例:"resource.management.autoUpgrade == false"
)。このフィールドの最大長は 1,000 文字です。CEL の使用方法の詳細については、Common Expression Language をご覧ください。ACTION
:condition
を満たしている場合に実行するアクション。ALLOW
またはDENY
になります。DISPLAY_NAME
: 制約の名前。このフィールドの最大長は 200 文字です。DESCRIPTION
: ポリシー違反時にエラー メッセージとして表示される制約の説明。わかりやすい説明を入力してください。このフィールドの最大長は 2,000 文字です。
新しいカスタム制約の 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 コンソールまたは gcloud CLI で削除できます。
コンソール
Google Cloud コンソールで [組織のポリシー] ページに移動します。
ページの上部にあるプロジェクト選択ツールを選択します。
プロジェクト選択ツールから、組織のポリシーを削除するリソースを選択します。
[組織のポリシー] ページのリストから、削除する制約を選択します。その制約の [ポリシーの詳細] ページが表示されます。
[
削除] をクリックします。[削除] をクリックして、制約の削除を確定します。
gcloud
カスタム制約を削除するには、org-policies delete-custom-constraint
gcloud CLI コマンドを使用します。
gcloud org-policies delete-custom-constraint custom.CONSTRAINT_NAME \
--organization=ORGANIZATION_ID
次のように置き換えます。
ORGANIZATION_ID
: 組織 ID(123456789
など)。CONSTRAINT_NAME
: カスタム制約の名前。例:custom.disableGkeAutoUpgrade
出力は次のようになります。
Deleted custom constraint [organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade
]
カスタム制約を削除しても、その制約を使用して作成されたポリシーは引き続き存在しますが、無視されます。削除したカスタム制約と同じ名前のカスタム制約を作成することはできません。
例: カスタム制約を使用して HDD ではなく SSD を使用するように強制する
次のように
dataDiskType.yaml
ファイルを作成します。name: organizations/651333429324/customConstraints/custom.dataDiskType resourceTypes: - sqladmin.googleapis.com/Instance methodTypes: - CREATE - UPDATE condition: resource.settings.dataDiskType == "PD_SSD" actionType: ALLOW displayName: dataDiskType must be PD_SDD description: dataDiskType must be PD_SSD
これにより、インスタンスのすべての
CREATE
メソッドとUPDATE
メソッドが、dataDiskType
がSSD
であるという制約を満たすようになります。そのため、HDD
を含むインスタンスはすべて拒否されます。組織レベルでカスタム制約を設定します。
gcloud org-policies set-custom-constraint dataDiskType.yaml
次のように enforceDataDiskType.yaml を作成します。
name: projects/custom-constraints-cloudsql3/policies/custom.dataDiskType spec: rules: - enforce: true
プロジェクト レベルでカスタム制約を適用します。
gcloud org-policies set-policy enforceDataDiskType.yaml
次のステップ
- 組織のポリシーについて学習する。
- Cloud SQL でプライベート IP がどのように機能するかについて学習する。
- Cloud SQL 用にプライベート IP を構成する方法について学習する。
- 組織のポリシー サービスについて学習する。
- 組織のポリシーの制約について学習する。
- カスタム組織のポリシーの作成と管理について学習する。