カスタム制約を使用して CA Service リソースを管理する

このページでは、組織のポリシー サービスのカスタム制約を使用して、次の Google Cloud リソースに対する特定のオペレーションを制限する方法について説明します。

  • privateca.googleapis.com/CaPool
  • privateca.googleapis.com/CertificateAuthority
  • privateca.googleapis.com/CertificateTemplate

組織のポリシーの詳細については、カスタムの組織のポリシーをご覧ください。

組織のポリシーと制約について

Google Cloud 組織のポリシー サービスを使用すると、組織のリソースをプログラマティックに一元管理できます。組織のポリシー管理者は組織のポリシーを定義できます。組織のポリシーは、Google Cloud リソース階層内のGoogle Cloud リソースやそれらのリソースの子孫に適用される、制約と呼ばれる一連の制限です。組織のポリシーは、組織レベル、フォルダレベル、またはプロジェクト レベルで適用できます。

組織のポリシーを利用することで、あらかじめ用意されたマネージド制約をさまざまな Google Cloud サービスに適用できます。ただし、組織のポリシーで制限されている特定の項目をより細かくカスタマイズして制御したい場合は、カスタム制約を作成して、それを組織のポリシーで使うこともできます。

ポリシーの継承

デフォルトでは、組織のポリシーは、そのポリシーを適用したリソースの子孫に継承されます。たとえば、フォルダにポリシーを適用した場合、 Google Cloud はそのフォルダ内のすべてのプロジェクトにそのポリシーを適用します。この動作の詳細と変更方法については、階層評価ルールをご覧ください。

始める前に

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.

  5. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  6. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Install the Google Cloud CLI.

  10. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  11. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  12. 組織 ID を確認します。
  13. 必要なロール

    カスタムの組織のポリシーを管理するために必要な権限を取得するには、組織のリソースに対する組織のポリシー管理者roles/orgpolicy.policyAdmin)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

    カスタム制約を設定する

    カスタム制約は、組織のポリシーを適用しているサービスでサポートされるリソース、メソッド、条件、アクションを使用して YAML ファイルで定義されます。カスタム制約の条件は、Common Expression Language(CEL)を使用して定義されます。CEL を使用してカスタム制約で条件を作成する方法については、カスタム制約の作成と管理の CEL セクションをご覧ください。

    コンソール

    カスタム制約を作成する手順は次のとおりです。

    1. Google Cloud コンソールで [組織のポリシー] ページに移動します。

      [組織のポリシー] に移動

    2. プロジェクト選択ツールで、組織のポリシーを設定するプロジェクトを選択します。
    3. [ カスタム制約] をクリックします。
    4. [表示名] ボックスに、人が読める形式で制約の名前を入力します。この名前はエラー メッセージで使用されるほか、識別やデバッグにも使用できます。エラー メッセージで公開される可能性があるため、表示名に個人情報(PII)や機密データを使用しないでください。このフィールドには、最大 200 文字まで入力できます。
    5. [制約 ID] ボックスに、新しいカスタム制約の名前を入力します。カスタム制約の名前に使用できるのは、英字(大文字と小文字)と数字のみです(例: custom.disableGkeAutoUpgrade)。このフィールドには、接頭辞(custom.)を除き、最大 70 文字まで入力できます(例: organizations/123456789/customConstraints/custom)。エラー メッセージで公開される可能性があるため、制約 ID に個人情報(PII)や機密データを含めないでください。
    6. [説明] ボックスに、人が読める形式で制約の説明を入力します。この説明は、ポリシー違反の際にエラー メッセージとして使用されます。ポリシー違反が発生した理由と、ポリシー違反を解決する方法に関する詳細を含めてください。エラー メッセージで公開される可能性があるため、説明に個人情報(PII)や機密データを含めないでください。 このフィールドには、最大 2,000 文字まで入力できます。
    7. [リソースの種類] ボックスで、制限するオブジェクトとフィールドを含む Google Cloud REST リソースの名前を選択します(例: container.googleapis.com/NodePool)。ほとんどの種類のリソースは、最大 20 個のカスタム制約をサポートしています。これより多くのカスタム制約を作成しようとすると、オペレーションは失敗します。
    8. [適用方法] で、REST の CREATE メソッドに制約を適用するか、CREATE メソッドと UPDATE メソッドの両方に制約を適用するかを選択します。制約に違反するリソースに対する UPDATE メソッドに制約を適用した場合、そのリソースへの変更は、違反を解決するものでない限り、組織のポリシーによってブロックされます。
    9. すべての Google Cloud サービスで両方のメソッドがサポートされているわけではありません。各サービスでサポートされているメソッドを確認するには、サポートされているサービスをご覧ください。

    10. 条件を定義するには、[ 条件を編集] をクリックします。
      1. [条件を追加] パネルで、サポートされているサービス リソースを参照する CEL 条件を作成します(例: resource.management.autoUpgrade == false)。このフィールドには、最大 1,000 文字まで入力できます。CEL の使用方法の詳細については、Common Expression Language をご覧ください。 カスタム制約で使用できるサービス リソースの詳細については、カスタム制約のサポート サービスをご覧ください。
      2. [保存] をクリックします。
    11. [アクション] で、条件が満たされた場合に評価対象のメソッドを許可するか拒否するかを選択します。
    12. 拒否アクションは、条件が true と評価された場合に、リソースを作成または更新するオペレーションがブロックされることを意味します。

      許可アクションは、条件が true と評価された場合にのみ、リソースを作成または更新するオペレーションが許可されることを意味します。条件に明記されているケースを除き、他のケースはすべてブロックされます。

    13. [制約を作成] をクリックします。
    14. 各フィールドに値を入力すると、このカスタム制約に対応する YAML 構成が右側に表示されます。

    gcloud

    1. カスタム制約を作成するには、次の形式で YAML ファイルを作成します。
    2.       name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
            resourceTypes:
            - RESOURCE_NAME
            methodTypes:
            - CREATE
      - UPDATE
      condition: "CONDITION" actionType: ACTION displayName: DISPLAY_NAME description: DESCRIPTION

      次のように置き換えます。

      • ORGANIZATION_ID: 組織 ID(例: 123456789)。
      • CONSTRAINT_NAME: 新しいカスタム制約の名前。カスタム制約の名前に使用できるのは、英字(大文字と小文字)と数字のみです(例: custom.enforceCaPoolEncodingFormat)。このフィールドには、最大 70 文字まで入力できます。
      • RESOURCE_NAME: 制限するオブジェクトとフィールドを含む Google Cloudリソースの完全修飾名。例: privateca.googleapis.com/CaPool
      • CONDITION: サポート対象のサービス リソースの表現に対して記述する CEL 条件。このフィールドには、最大 1,000 文字まで入力できます。例: "resource.publishingOptions.encodingFormat == 'DER'"
      • 条件を記述できるリソースの詳細については、サポートされているリソースをご覧ください。

      • ACTION: condition が満たされた場合に実行するアクション。 有効な値は ALLOWDENY です。
      • 許可アクションは、条件が true と評価された場合に、リソースを作成または更新するオペレーションが許可されることを意味します。つまり、条件に明記されているケース以外はすべてブロックされます。

        拒否アクションは、条件が true と評価された場合に、リソースを作成または更新するオペレーションがブロックされることを意味します。

      • DISPLAY_NAME: 制約の名前。わかりやすい名前を入力してください。このフィールドには、最大 200 文字まで入力できます。
      • DESCRIPTION: ポリシー違反の際にエラー メッセージとして表示される制約の説明。わかりやすい説明を入力してください。このフィールドには、最大 2,000 文字まで入力できます。
    3. 新しいカスタム制約の YAML ファイルを作成したら、組織内で組織のポリシーとして使用できるように設定する必要があります。カスタム制約を設定するには、gcloud org-policies set-custom-constraint コマンドを使用します。
    4.         gcloud org-policies set-custom-constraint CONSTRAINT_PATH
            

      CONSTRAINT_PATH は、カスタム制約ファイルのフルパスに置き換えます。例: /home/user/customconstraint.yaml

      この操作が完了すると、カスタム制約が Google Cloud の組織ポリシーのリストに表示され、組織のポリシーとして使用できるようになります。

    5. カスタム制約が存在することを確認するには、gcloud org-policies list-custom-constraints コマンドを使用します。
    6.       gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
            

      ORGANIZATION_ID は組織リソースの ID に置き換えます。

      詳細については、組織のポリシーの表示をご覧ください。

    カスタムの組織のポリシーを適用する

    制約を適用するには、それを参照する組織のポリシーを作成し、その組織のポリシーを Google Cloud リソースに適用します。

    コンソール

    1. Google Cloud コンソールで [組織のポリシー] ページに移動します。

      [組織のポリシー] に移動

    2. プロジェクト選択ツールで、組織のポリシーを設定するプロジェクトを選択します。
    3. [組織のポリシー] ページのリストで制約を選択して、その制約の [ポリシーの詳細] ページを表示します。
    4. このリソースの組織のポリシーを構成するには、[ポリシーを管理] をクリックします。
    5. [ポリシーの編集] ページで、[Override parent's policy] を選択します。
    6. [ルールを追加] をクリックします。
    7. [適用] セクションで、この組織のポリシーを適用するかどうかを選択します。
    8. 省略可: タグで組織のポリシーに条件を設定するには、[条件を追加] をクリックします。組織のポリシーに条件付きルールを追加する場合は、少なくとも 1 つは無条件のルールを追加する必要があります。そうしないとポリシーを保存できないのでご注意ください。詳細については、タグを使用した組織のポリシーの設定をご覧ください。
    9. [変更内容をテスト] をクリックして、組織のポリシーの効果をシミュレートします。詳細については、Policy Simulator で組織のポリシーの変更をテストするをご覧ください。
    10. ドライラン モードで組織のポリシーを適用するには、[ドライラン ポリシーを設定] をクリックします。詳細については、ドライラン モードで組織のポリシーを作成するをご覧ください。
    11. ドライラン モードで組織のポリシーが想定どおりに動作することを確認したら、[ポリシーを設定] をクリックして有効なポリシーを設定します。

    gcloud

    1. ブール値のルールを含む組織のポリシーを作成するには、制約を参照するポリシーの YAML ファイルを作成します。
    2.         name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
              spec:
                rules:
                - enforce: true
              
              dryRunSpec:
                rules:
                - enforce: true
              
            

      次のように置き換えます。

      • PROJECT_ID: 制約を適用するプロジェクト。
      • CONSTRAINT_NAME: カスタム制約に定義した名前。例: custom.enforceCaPoolEncodingFormat
    3. ドライラン モードで組織のポリシーを適用するには、dryRunSpec フラグを指定して次のコマンドを実行します。
    4.         gcloud org-policies set-policy POLICY_PATH \
                --update-mask=dryRunSpec
            

      POLICY_PATH は、組織のポリシーの YAML ファイルのフルパスに置き換えます。ポリシーが有効になるまでに最大 15 分かかります。

    5. ドライラン モードで組織のポリシーが想定どおりに動作することを確認したら、org-policies set-policy コマンドと spec フラグを使用して有効なポリシーを設定します。
    6.         gcloud org-policies set-policy POLICY_PATH \
                --update-mask=spec
            

      POLICY_PATH は、組織のポリシーの YAML ファイルのフルパスに置き換えます。ポリシーが有効になるまでに最大 15 分かかります。

    カスタム組織のポリシーをテストする

    次の例では、特定のプロジェクト内のすべての認証局プール(CaPool)リソースが、最大証明書有効期間が 30 日以内の証明書を発行することを必須にするカスタムの制約とポリシーを作成します。

    始める前に、次のことを理解しておく必要があります。

    • 組織の ID
    • プロジェクト ID

    必要なロール

    このガイドでカスタム制約の管理、API の有効化、CA Service リソースの管理に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

    ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

    組織のポリシー サービス API を有効にする

    gcloud org-policies コマンドには orgpolicy.googleapis.com API が必要です。プロジェクトで次の API を有効にします。

         gcloud services enable orgpolicy.googleapis.com --project=PROJECT_ID
    

    PROJECT_ID は、実際のプロジェクト ID に置き換えます。

    制約を作成する

    1. 次のファイルに constraint-cas-capool-lifetime.yaml という名前を付けて保存します。

      name: organizations/ORGANIZATION_ID/customConstraints/custom.enforceCasMaxLifetime30d
      resourceTypes:
      - privateca.googleapis.com/CaPool
      methodTypes:
      - CREATE
      - UPDATE
      condition: "!has(resource.issuancePolicy.maximumLifetime) || duration(resource.issuancePolicy.maximumLifetime) > duration('2592000s')"
      actionType: DENY
      displayName: Enforce Max Certificate Lifetime (30 Days)
      description: Only allows CaPools where the issuancePolicy.maximumLifetime field is set to 30 days (2592000 seconds) or less.
      

      ORGANIZATION_ID は、実際の組織 ID に置き換えます。

    2. 次の制約を適用します。

      gcloud org-policies set-custom-constraint ~/constraint-cas-capool-lifetime.yaml
      
    3. 制約が存在することを確認します。

      gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
      

      ORGANIZATION_ID は、実際の組織 ID に置き換えます。

    ポリシーを作成する

    1. 次のファイルに policy-cas-capool-lifetime.yaml という名前を付けて保存します。

      name: projects/PROJECT_ID/policies/custom.enforceCasMaxLifetime30d
      spec:
        rules:
        - enforce: true
      

      PROJECT_ID は、実際のプロジェクト ID に置き換えます。

    2. 次のポリシーを適用します。

      gcloud org-policies set-policy ~/policy-cas-capool-lifetime.yaml
      
    3. ポリシーが存在することを確認します。

      gcloud org-policies list --project=PROJECT_ID
      

      PROJECT_ID は、実際のプロジェクト ID に置き換えます。

    ポリシーを適用したら、 Google Cloud がポリシーの適用を開始するまで 15 分ほど待ちます。詳細については、組織のポリシーの作成と管理をご覧ください。

    ポリシーのテスト

    カスタム制約をテストするには、gcloud CLI を使用して CA Service プールを作成して更新します。

    テストリソースの変数を定義します。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID
    • LOCATION: CA プールのリージョン(例: us-west1
    • POOL_NAME: テスト CA プールの名前(例: my-test-pool
    1. 最大有効期間が 30 日を超える CA プールを作成します。

      maximumLifetime が 30 日を超える(たとえば、31 日、つまり 2,678,400 秒)capool_violating.yaml という名前の YAML ファイルを作成します。maximumLifetime フィールドは秒単位で設定します。

      # capool_violating.yaml
      maximumLifetime: 2678400s
      

      ポリシーに違反する CA プールを作成するには、次のコマンドを実行します。

      # This creation should be blocked by the policy
      gcloud privateca pools create POOL_NAME-violating \
        --location LOCATION \
        --project PROJECT_ID \
        --issuance-policy capool_violating.yaml
      

      コマンドは FAILED_PRECONDITION エラーで失敗し、customConstraints/custom.enforceCasMaxLifetime30d 制約の違反が示されます。

    2. 準拠した最大有効期間で CA プールを作成します。

      maximumLifetime が 30 日(2,592,000 秒)の capool_compliant.yaml という名前の YAML ファイルを作成します。maximumLifetime フィールドは秒単位で設定します。

      # capool_compliant.yaml
      maximumLifetime: 2592000s
      

      CA プールを作成するには、次のコマンドを実行します。

      gcloud privateca pools create POOL_NAME \
        --location "LOCATION" \
        --project "PROJECT_ID" \
        --issuance-policy capool_compliant.yaml
      

      コマンドが正常に完了します。

    3. CA プールを準拠していない最大有効期間に更新してみます。

      次のコマンドを実行して、capool_violating.yaml の設定を適用します。

      # This update is blocked by the policy
      gcloud privateca pools update POOL_NAME \
        --location "LOCATION" \
        --project "PROJECT_ID" \
        --issuance-policy capool_violating.yaml
      

      このコマンドは FAILED_PRECONDITION エラーで失敗し、customConstraints/custom.enforceCasMaxLifetime30d 制約の違反を示します。

    4. CA プールを別の準拠した最大有効期間に更新する

      maximumLifetime が 15 日(1,296,000 秒)の capool_compliant_update.yaml という名前の YAML ファイルを作成します。maximumLifetime フィールドは秒単位で設定します。

      # capool_compliant_update.yaml
      maximumLifetime: 1296000s
      

      CA プールを更新するには、次のコマンドを実行します。

      gcloud privateca pools update POOL_NAME \
        --location "LOCATION" \
        --project "PROJECT_ID" \
        --issuance-policy capool_compliant_update.yaml
      

      コマンドが正常に完了します。

    5. テストリソースをクリーンアップします。

      テスト中に作成した CA プールを削除します。

      gcloud privateca pools delete POOL_NAME \
        --location "LOCATION" \
        --project "PROJECT_ID" \
      

    一般的なユースケースのカスタム組織ポリシーの例

    次の表では一般的なカスタム制約の構文例をまとめています。

    説明 制約の構文
    すべての CA に特定の鍵アルゴリズムを適用する

    新しい認証局が許可されている鍵アルゴリズムのいずれかを使用するようにします。

    name: organizations/ORGANIZATION_ID/customConstraints/custom.casAllowedKeyAlgos
    resourceTypes:
    - privateca.googleapis.com/CertificateAuthority
    methodTypes:
    - CREATE
    - UPDATE
    condition: "resource.keySpec.algorithm in ['EC_P256_SHA256', 'RSA_PSS_3072_SHA256']"
    actionType: ALLOW
    displayName: Restrict CA Key Algorithms
    description: Only allows specific key algorithms for new CAs.
        
    CA のサブジェクトに特定の組織名を要求する

    すべての新しい CA のサブジェクトに標準化された organization フィールドがあることを確認します。

    name: organizations/ORGANIZATION_ID/customConstraints/custom.casRequireSubjectOrg
    resourceTypes:
    - privateca.googleapis.com/CertificateAuthority
    methodTypes:
    - CREATE
    - UPDATE
    condition: "resource.config.subjectConfig.subject.organization == 'Example Company Inc.'"
    actionType: ALLOW
    displayName: Enforce CA Subject Organization
    description: Requires new CAs to have the specified organization name.
        
    CaPool の最大証明書有効期間を適用する

    最大有効期間が 30 日以内の証明書を発行するように CaPool が構成されていることを確認します。

    name: organizations/ORGANIZATION_ID/customConstraints/custom.enforceCasMaxLifetime30d
    resourceTypes:
    - privateca.googleapis.com/CaPool
    methodTypes:
    - CREATE
    - UPDATE
    condition: "!has(resource.issuancePolicy.maximumLifetime) || duration(resource.issuancePolicy.maximumLifetime) > duration('2592000s')"
    actionType: DENY
    displayName: Enforce Max Certificate Lifetime (30 Days)
    description: Only allows CaPools where the issuancePolicy.maximumLifetime field is set to 30 days (2592000 seconds) or less.
        

    Certificate Authority Service でサポートされているリソース

    次の表に、カスタム制約で参照できる Certificate Authority Service リソースを示します。

    リソース フィールド
    privateca.googleapis.com/CaPool resource.issuancePolicy.allowedIssuanceModes.allowConfigBasedIssuance
    resource.issuancePolicy.allowedIssuanceModes.allowCsrBasedIssuance
    resource.issuancePolicy.allowedKeyTypes.ellipticCurve.signatureAlgorithm
    resource.issuancePolicy.allowedKeyTypes.rsa.maxModulusSize
    resource.issuancePolicy.allowedKeyTypes.rsa.minModulusSize
    resource.issuancePolicy.backdateDuration
    resource.issuancePolicy.baselineValues.additionalExtensions.critical
    resource.issuancePolicy.baselineValues.additionalExtensions.objectId.objectIdPath
    resource.issuancePolicy.baselineValues.additionalExtensions.value
    resource.issuancePolicy.baselineValues.aiaOcspServers
    resource.issuancePolicy.baselineValues.caOptions.isCa
    resource.issuancePolicy.baselineValues.caOptions.maxIssuerPathLength
    resource.issuancePolicy.baselineValues.keyUsage.baseKeyUsage.certSign
    resource.issuancePolicy.baselineValues.keyUsage.baseKeyUsage.contentCommitment
    resource.issuancePolicy.baselineValues.keyUsage.baseKeyUsage.crlSign
    resource.issuancePolicy.baselineValues.keyUsage.baseKeyUsage.dataEncipherment
    resource.issuancePolicy.baselineValues.keyUsage.baseKeyUsage.decipherOnly
    resource.issuancePolicy.baselineValues.keyUsage.baseKeyUsage.digitalSignature
    resource.issuancePolicy.baselineValues.keyUsage.baseKeyUsage.encipherOnly
    resource.issuancePolicy.baselineValues.keyUsage.baseKeyUsage.keyAgreement
    resource.issuancePolicy.baselineValues.keyUsage.baseKeyUsage.keyEncipherment
    resource.issuancePolicy.baselineValues.keyUsage.extendedKeyUsage.clientAuth
    resource.issuancePolicy.baselineValues.keyUsage.extendedKeyUsage.codeSigning
    resource.issuancePolicy.baselineValues.keyUsage.extendedKeyUsage.emailProtection
    resource.issuancePolicy.baselineValues.keyUsage.extendedKeyUsage.ocspSigning
    resource.issuancePolicy.baselineValues.keyUsage.extendedKeyUsage.serverAuth
    resource.issuancePolicy.baselineValues.keyUsage.extendedKeyUsage.timeStamping
    resource.issuancePolicy.baselineValues.keyUsage.unknownExtendedKeyUsages.objectIdPath
    resource.issuancePolicy.baselineValues.nameConstraints.critical
    resource.issuancePolicy.baselineValues.nameConstraints.excludedDnsNames
    resource.issuancePolicy.baselineValues.nameConstraints.excludedEmailAddresses
    resource.issuancePolicy.baselineValues.nameConstraints.excludedIpRanges
    resource.issuancePolicy.baselineValues.nameConstraints.excludedUris
    resource.issuancePolicy.baselineValues.nameConstraints.permittedDnsNames
    resource.issuancePolicy.baselineValues.nameConstraints.permittedEmailAddresses
    resource.issuancePolicy.baselineValues.nameConstraints.permittedIpRanges
    resource.issuancePolicy.baselineValues.nameConstraints.permittedUris
    resource.issuancePolicy.baselineValues.policyIds.objectIdPath
    resource.issuancePolicy.identityConstraints.allowSubjectAltNamesPassthrough
    resource.issuancePolicy.identityConstraints.allowSubjectPassthrough
    resource.issuancePolicy.identityConstraints.celExpression
    resource.issuancePolicy.maximumLifetime
    resource.issuancePolicy.passthroughExtensions.additionalExtensions.objectIdPath
    resource.issuancePolicy.passthroughExtensions.knownExtensions
    resource.name
    resource.publishingOptions.encodingFormat
    resource.publishingOptions.publishCaCert
    resource.publishingOptions.publishCrl
    resource.tier
    privateca.googleapis.com/CertificateAuthority resource.config.subjectConfig.subject.commonName
    resource.config.subjectConfig.subject.countryCode
    resource.config.subjectConfig.subject.locality
    resource.config.subjectConfig.subject.organization
    resource.config.subjectConfig.subject.organizationalUnit
    resource.config.subjectConfig.subject.postalCode
    resource.config.subjectConfig.subject.province
    resource.config.subjectConfig.subject.streetAddress
    resource.config.subjectConfig.subjectAltName.customSans.critical
    resource.config.subjectConfig.subjectAltName.customSans.objectId.objectIdPath
    resource.config.subjectConfig.subjectAltName.customSans.value
    resource.config.subjectConfig.subjectAltName.dnsNames
    resource.config.subjectConfig.subjectAltName.emailAddresses
    resource.config.subjectConfig.subjectAltName.ipAddresses
    resource.config.subjectConfig.subjectAltName.uris
    resource.config.subjectKeyId.keyId
    resource.config.x509Config.additionalExtensions.critical
    resource.config.x509Config.additionalExtensions.objectId.objectIdPath
    resource.config.x509Config.additionalExtensions.value
    resource.config.x509Config.aiaOcspServers
    resource.config.x509Config.caOptions.isCa
    resource.config.x509Config.caOptions.maxIssuerPathLength
    resource.config.x509Config.keyUsage.baseKeyUsage.certSign
    resource.config.x509Config.keyUsage.baseKeyUsage.contentCommitment
    resource.config.x509Config.keyUsage.baseKeyUsage.crlSign
    resource.config.x509Config.keyUsage.baseKeyUsage.dataEncipherment
    resource.config.x509Config.keyUsage.baseKeyUsage.decipherOnly
    resource.config.x509Config.keyUsage.baseKeyUsage.digitalSignature
    resource.config.x509Config.keyUsage.baseKeyUsage.encipherOnly
    resource.config.x509Config.keyUsage.baseKeyUsage.keyAgreement
    resource.config.x509Config.keyUsage.baseKeyUsage.keyEncipherment
    resource.config.x509Config.keyUsage.extendedKeyUsage.clientAuth
    resource.config.x509Config.keyUsage.extendedKeyUsage.codeSigning
    resource.config.x509Config.keyUsage.extendedKeyUsage.emailProtection
    resource.config.x509Config.keyUsage.extendedKeyUsage.ocspSigning
    resource.config.x509Config.keyUsage.extendedKeyUsage.serverAuth
    resource.config.x509Config.keyUsage.extendedKeyUsage.timeStamping
    resource.config.x509Config.keyUsage.unknownExtendedKeyUsages.objectIdPath
    resource.config.x509Config.nameConstraints.critical
    resource.config.x509Config.nameConstraints.excludedDnsNames
    resource.config.x509Config.nameConstraints.excludedEmailAddresses
    resource.config.x509Config.nameConstraints.excludedIpRanges
    resource.config.x509Config.nameConstraints.excludedUris
    resource.config.x509Config.nameConstraints.permittedDnsNames
    resource.config.x509Config.nameConstraints.permittedEmailAddresses
    resource.config.x509Config.nameConstraints.permittedIpRanges
    resource.config.x509Config.nameConstraints.permittedUris
    resource.config.x509Config.policyIds.objectIdPath
    resource.gcsBucket
    resource.keySpec.algorithm
    resource.keySpec.cloudKmsKeyVersion
    resource.lifetime
    resource.name
    resource.subordinateConfig.certificateAuthority
    resource.subordinateConfig.pemIssuerChain.pemCertificates
    resource.type
    resource.userDefinedAccessUrls.aiaIssuingCertificateUrls
    resource.userDefinedAccessUrls.crlAccessUrls
    privateca.googleapis.com/CertificateTemplate resource.description
    resource.identityConstraints.allowSubjectAltNamesPassthrough
    resource.identityConstraints.allowSubjectPassthrough
    resource.identityConstraints.celExpression
    resource.maximumLifetime
    resource.name
    resource.passthroughExtensions.additionalExtensions.objectIdPath
    resource.passthroughExtensions.knownExtensions
    resource.predefinedValues.additionalExtensions.critical
    resource.predefinedValues.additionalExtensions.objectId.objectIdPath
    resource.predefinedValues.additionalExtensions.value
    resource.predefinedValues.aiaOcspServers
    resource.predefinedValues.caOptions.isCa
    resource.predefinedValues.caOptions.maxIssuerPathLength
    resource.predefinedValues.keyUsage.baseKeyUsage.certSign
    resource.predefinedValues.keyUsage.baseKeyUsage.contentCommitment
    resource.predefinedValues.keyUsage.baseKeyUsage.crlSign
    resource.predefinedValues.keyUsage.baseKeyUsage.dataEncipherment
    resource.predefinedValues.keyUsage.baseKeyUsage.decipherOnly
    resource.predefinedValues.keyUsage.baseKeyUsage.digitalSignature
    resource.predefinedValues.keyUsage.baseKeyUsage.encipherOnly
    resource.predefinedValues.keyUsage.baseKeyUsage.keyAgreement
    resource.predefinedValues.keyUsage.baseKeyUsage.keyEncipherment
    resource.predefinedValues.keyUsage.extendedKeyUsage.clientAuth
    resource.predefinedValues.keyUsage.extendedKeyUsage.codeSigning
    resource.predefinedValues.keyUsage.extendedKeyUsage.emailProtection
    resource.predefinedValues.keyUsage.extendedKeyUsage.ocspSigning
    resource.predefinedValues.keyUsage.extendedKeyUsage.serverAuth
    resource.predefinedValues.keyUsage.extendedKeyUsage.timeStamping
    resource.predefinedValues.keyUsage.unknownExtendedKeyUsages.objectIdPath
    resource.predefinedValues.nameConstraints.critical
    resource.predefinedValues.nameConstraints.excludedDnsNames
    resource.predefinedValues.nameConstraints.excludedEmailAddresses
    resource.predefinedValues.nameConstraints.excludedIpRanges
    resource.predefinedValues.nameConstraints.excludedUris
    resource.predefinedValues.nameConstraints.permittedDnsNames
    resource.predefinedValues.nameConstraints.permittedEmailAddresses
    resource.predefinedValues.nameConstraints.permittedIpRanges
    resource.predefinedValues.nameConstraints.permittedUris
    resource.predefinedValues.policyIds.objectIdPath

    次のステップ