カスタム・エンドポイントのVaultの構成

Visual Builderインスタンスのカスタム・エンドポイントを作成するには、OCIのKey Management Serviceを使用して、カスタム・エンドポイントへのアクセスの保護に使用されるマスター暗号化キーおよびシークレットを格納するボールトを作成できます。

OCIコンソールで、カスタム・エンドポイントを作成するコンパートメントにOCIボールトを作成します。ボールトの使用の詳細は、コンパートメントの使用Vaultの概要および新規Vaultの作成を参照してください。

ノート

WAFおよびロード・バランサを使用してカスタム・エンドポイントを保護している場合、ボールトを作成する必要はありません。

OCIコンソールでボールトを作成して構成した後、Visual Builderインスタンスの詳細ページでインスタンスの最初の(プライマリ)カスタム・エンドポイントを構成できます。インスタンスにすでにプライマリ・エンドポイントがあり、別のエンドポイントを追加する場合は、コマンドラインから代替エンドポイントを作成する必要があります。同様に、インスタンスにすでに複数のカスタム・エンドポイントがあり、それらのいずれかを編集する場合は、コマンドラインからも編集する必要があります。詳細は、代替エンドポイントの作成と更新を参照してください。

ボールトでシークレットを作成する場合、次のものを含むシークレット証明書を指定する必要があります:

  • ホスト名のSSL証明書、
  • 一致する秘密キー、および
  • SSLチェーン内のすべての中間証明書。

SSL証明書に必要な場合は、パスフレーズも指定する必要があります。これらは、SSL証明書プロバイダから取得できます。

ノート

opensslを使用して、SSL証明書と非公開鍵を検証できます。

OCIコンソールでOCIボールトを作成および構成するには:

  1. OCIコンソールで、「ナビゲーション・メニュー」メニュー・アイコンをクリックし、「アイデンティティとセキュリティ」を選択し、「Vault」を選択して「ボールト」ページを開きます。
  2. 「ボールト」ページで、「Vaultの作成」をクリックして「Vaultの作成」パネルを開きます。

    「Create Vault」パネルで、ボールトを正しいコンパートメントに作成していることを確認します。正しいコンパートメントでない場合は、「コンパートメントで作成」ドロップダウン・リストでコンパートメントを選択します。

  3. ボールトの名前を入力します。「Vaultの作成」をクリックして、「ボールト」ページに戻ります。


    「Create Vault」をクリックすると、新しいボールトが「Vaults」ページの表に表示されるまで数分かかる場合があります。

  4. 「ボールト」ページの表で、作成したボールトの名前をクリックして、ボールトの詳細ページを開きます。
  5. ボールトのマスター暗号化キーを作成します。
    1. ボールトの「マスター暗号化キー」タブを開きます。
    2. 「キーの作成」をクリックして、「キーの作成」パネルを開きます。
    3. [名前]フィールドにキーの名前を入力します。

      キーを作成するには、名前のみを入力する必要があります。その他のオプションのデフォルト設定を使用します。

    4. 「キーの作成」をクリックして、「マスター暗号化キー」タブに戻ります。
  6. シークネットを作成します。

    証明書をシークレットとしてOCI Vaultに格納します。シークレットの詳細は、新しいシークレットの作成を参照してください。

    1. ボールトの「シークレット」タブを開きます。
    2. 「シークレットの作成」をクリックして、「シークレットの作成」パネルを開きます。
    3. シークレットの名前と説明を入力します。
    4. 「暗号化キー」ドロップダウン・リストで、「マスター暗号化キー」タブで作成したキーを選択します。
    5. 「手動シークレット生成」を選択します。

      手動シークレット生成を明示的に選択してください。デフォルトは自動シークレット生成です。



    6. シークレット証明書を生成し、「シークレット・コンテンツ」フィールドに貼り付けます。

      証明書には次の形式を使用します。

      {
        "key": "-----BEGIN PRIVATE KEY-----\n…..-----END PRIVATE KEY-----\n",
        "cert": "-----BEGIN CERTIFICATE-----\n….-----END CERTIFICATE-----\n",
        "intermediates": [
          "-----BEGIN CERTIFICATE-----\n….-----END CERTIFICATE-----\n",
          "-----BEGIN CERTIFICATE-----\n….-----END CERTIFICATE-----\n"
        ],
        "passphrase": "<private key password if encrypted key is provided>"
      }
      証明書を生成するときは、次の証明書要件に注意してください。
      • key要素とcert要素が必要です。
      • 各中間証明書は、intermediates配列の個別の要素として指定する必要があります。ほとんどの場合、中間は1つのみです。中間はSSLプロバイダによって提供されます。
      • 最後のルートCAが配列の最後の要素として指定されていることを確認してください。たとえば、リーフ証明書に3つの中間証明書がある場合、リーフ証明書を発行した証明書はintermediates[0]要素として、intermediates[0]証明書を発行した証明書はintermediates[1]要素に入れ、intermediates[1]証明書を発行した証明書はintermediates[2]要素に入れる必要があります。
      • passphrase属性は、秘密キーがパスフレーズで暗号化されている場合にのみ必要です。不要な場合は、属性を含めないでください。
      • 暗号化された秘密キーを使用する場合は、次の形式が必要です(PKCS1がサポートされています)。
        -----BEGIN RSA PRIVATE KEY-----
        Proc-Type: 4,ENCRYPTED
        -----END RSA PRIVATE KEY-----
        

        暗号化された秘密キーを含むJSONファイルは次のようになります。

        {
          "key": "-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\n....\n-----END RSA PRIVATE KEY-----",
        ..
        ..
          "passphrase": "<passphrase to decrypt the key>"
        }
        

        暗号化されていない秘密キーを含むJSONファイルは次のようになります。

        {
          "key": "-----BEGIN RSA PRIVATE KEY-----\nvRXUK08v31bw2rnDLw+vjuX2i8ujHWs\n....\n-----END RSA PRIVATE KEY-----",
        ..
        ..
        }
        
      • 秘密キーがPKCS8形式の場合は、PKCS1形式に変換する必要があります。
        openssl rsa -in <input_pkcs8_encrypted_private_key> -out <converted_encrypted_private_key_file_name> -aes256
      ノート

      行の末尾が正しくエンコードされるように、Linux/UnixコマンドラインまたはUnixユーティリティから証明書JSONを生成することを強くお薦めします。行末が正しくないと、エラーが発生します。

      • 手動エラーを回避するために、次のawkコマンドを使用して、PEM証明書を"\n"を含む単一行に変換することもできます。

        リーフ証明書の場合:

        awk -v RS= '{gsub(/\n+/, "\\n")}1' <cert_pem_file>

        中間/ルート証明書ごとに:

        awk -v RS= '{gsub(/\n+/, "\\n")}1' <each_intermediate_cert_pem_file>

        秘密キーの場合:

        awk -v RS= '{gsub(/\n+/, "\\n")}1' <private_key_pem_file>
      • 最新バージョンのシークレットは、インスタンスの作成操作またはインスタンスの編集操作によってカスタム・エンドポイントをインスタンスに関連付けるときに使用されます。シークレット・バージョンの詳細は、シークレット・バージョンおよびローテーション状態を参照してください。
      • 認証局(CA)がVisual Builderトラスト・ストアにないホスト名証明書を使用する場合は、証明書もVisual Builderインスタンスにアップロードする必要があります。そうしないと、インスタンスが自身をコールするシナリオで例外がスローされます。

      シークレットの作成ページの他のオプションのデフォルト設定を使用します。

    7. 「シークレットの作成」をクリックして、「シークレット」タブに戻ります。
  7. Identity and Access Management (IAM)ポリシーを作成して、次のことを実行します。
    1. Visual Builderサービスがシークレットのバージョンと内容を読み取ることを許可します。

      Visual Builderサービスのポリシー構文を次に示します:

      allow group <group-name> to read secret-bundle in compartment <secrets-compartment>

      次に例を示します:

      allow group VBInstanceAdmins to read secret-bundle in compartment MySecretCompartment

      VBインスタンスがデフォルト・ドメインにない場合は、グループ名の前にドメイン接頭辞を含める必要があります。

      次に例を示します:

      Allow group mydomain/VBInstanceAdmins to read secret-bundle in compartment MySecretCompartment

    2. カスタム・エンドポイントを使用してVisual Builderインスタンスを作成または更新しながら、管理者グループがシークレット、キーおよびボールトにアクセス(または新しいシークレット、キーおよびボールトを作成)できるようにします。

      ポリシーの構文は次のとおりです。

      allow group <group-name> to manage secrets in compartment <secrets-compartment>

      allow group <group-name> to manage keys in compartment <secrets-compartment>

      allow group <group-name> to manage vaults in compartment <secrets-compartment>

      以下に例を示します。

      Allow group VBInstanceAdmins to manage secrets in compartment MySecretCompartment

      Allow group VBInstanceAdmins to manage keys in compartment MySecretCompartment

      Allow group VBInstanceAdmins to manage vaults in compartment MySecretCompartment

      VBインスタンスがデフォルト・ドメインにない場合は、グループ名の前にドメイン接頭辞を含める必要があります。

      次に例を示します:

      Allow group mydomain/VBInstanceAdmins to manage secrets in compartment MySecretCompartment

      Allow group mydomain/VBInstanceAdmins to manage keys in compartment MySecretCompartment

      Allow group mydomain/VBInstanceAdmins to manage vaults in compartment MySecretCompartment

    Vaultサービスの詳細に関する項の説明に従って、<resource-type>で返すリソースを指定する必要があります。

    ポリシー・ステートメントの構文については、前述の表3-1およびCreatePolicy APIリクエストを参照してください。