Apigee mTLS を構成する

クラスタ内のすべてのノードに apigee-mtls コンポーネントをインストールしたら、コンポーネントを構成して初期化する必要があります。そのためには、証明書と鍵のペアを生成し、管理マシンの構成ファイルを更新します。次に、同じ生成されたファイルをクラスタ内のすべてのノードにデプロイし、ローカルの apigee-mtls コンポーネントを初期化します。

apigee-mtls を構成する(初回インストール後)

このセクションでは、最初のインストールの直後に、単一のデータセンターに Apigee mTLS を構成する方法について説明します。Apigee mTLS の既存のインストールを更新する方法については、既存の apigee-mtls 構成を変更するをご覧ください。複数のデータセンターの構成については、Apigee mTLS を使用するように複数のデータセンターを構成するをご覧ください。

apigee-mtls を構成する一般的なプロセスは次のとおりです。

  1. 構成ファイルを更新する: 管理マシンで構成ファイルを更新して、apigee-mtls の設定を含めます。
  2. Consul をインストールして認証情報を生成する: Consul をインストールし、それを使用して TLS 認証情報を生成します(1 回のみ)。

    さらに、Apigee mTLS 構成ファイルを次のように編集します。

    1. 認証情報を追加する
    2. クラスタのトポロジを定義する

    既存の認証情報を使用することも、Consul で認証情報を生成することもできます。

  3. 構成ファイルと認証情報を配布する: 生成された同じ証明書と鍵のペアと更新された構成ファイルをクラスタ内のすべてのノードに配布します。
  4. apigee-mtls を初期化する: 各ノードで apigee-mtls コンポーネントを初期化します。

それぞれの手順は、次のセクションで説明します。

ステップ 1: 構成ファイルを更新する

このセクションでは、構成ファイルを変更して mTLS 構成プロパティを含める方法について説明します。構成ファイルに関する一般的な情報については、構成ファイルの作成をご覧ください。

mTLS 関連のプロパティで構成ファイルを更新した後、クラスタ内のすべてのノードにコピーしてから、これらのノードの apigee-mtls コンポーネントを初期化します。

構成ファイルを参照するコマンドが config_file を使用して、構成ファイルを保存する場所に応じてその場所が可変であることを示します。

構成ファイルを更新するには:

  1. 管理マシンで構成ファイルを開きます。
  2. 次の mTLS 構成プロパティをコピーして、構成ファイルに貼り付けます。
    ALL_IP="ALL_PRIVATE_IPS_IN_CLUSTER"
    ZK_MTLS_HOSTS="ZOOKEEPER_PRIVATE_IPS"
    CASS_MTLS_HOSTS="CASSANDRA_PRIVATE_IPS"
    PG_MTLS_HOSTS="POSTGRES_PRIVATE_IPS"
    RT_MTLS_HOSTS="ROUTER_PRIVATE_IPS"
    MS_MTLS_HOSTS="MGMT_SERVER_PRIVATE_IPS"
    MP_MTLS_HOSTS="MESSAGE_PROCESSOR_PRIVATE_IPS"
    QP_MTLS_HOSTS="QPID_PRIVATE_IPS"
    LDAP_MTLS_HOSTS="OPENLDAP_PRIVATE_IPS"
    MTLS_ENCAPSULATE_LDAP="y"
    
    ENABLE_SIDECAR_PROXY="y"
    ENCRYPT_DATA="BASE64_GOSSIP_MESSAGE"
    PATH_TO_CA_CERT="PATH/TO/consul-agent-ca.pem"
    PATH_TO_CA_KEY="PATH/TO/consul-agent-ca-key.pem"
    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR="NUMBER_OF_DAYS"

    構成に合わせて、各プロパティの値を設定します。

    次の表に、これらの構成プロパティを示します。

    プロパティ 説明
    ALL_IP クラスタ内のすべてのノードのプライベート ホスト IP アドレスをスペースで区切ったリスト。

    IP アドレスの順序は重要ではありませんが、クラスタ全体のすべての構成ファイルで同じにする必要があります。

    複数のデータセンターに Apigee mTLS を構成する場合は、すべてのリージョンのすべてのホストのすべての IP アドレスを一覧表示します。

    LDAP_MTLS_HOSTS クラスタ内の OpenLDAP ノードのプライベート ホスト IP アドレス。
    ZK_MTLS_HOSTS

    クラスタで ZooKeeper ノードがホストされているプライベート ホスト IP アドレスをスペースで区切ったリスト。

    要件に基づいて、少なくとも 3 つの ZooKeeper ノードが必要です。

    CASS_MTLS_HOSTS クラスタ内の Cassandra サーバーがホストされているプライベート ホスト IP アドレスをスペースで区切ったリスト。
    PG_MTLS_HOSTS クラスタ内の Postgres サーバーがホストされているプライベート ホスト IP アドレスをスペースで区切ったリスト。
    RT_MTLS_HOSTS Router がクラスタでホストされているプライベート ホスト IP アドレスをスペースで区切ったリスト。
    MTLS_ENCAPSULATE_LDAP Message Processor と LDAP サーバー間の LDAP トラフィックを暗号化します。y に設定します。
    MS_MTLS_HOSTS クラスタ内の Management Server ノードがホストされているプライベート ホスト IP アドレスをスペースで区切ったリスト。
    MP_MTLS_HOSTS クラスタで Message Processor がホストされているプライベート ホスト IP アドレスをスペースで区切ったリスト。
    QP_MTLS_HOSTS クラスタ内の Qpid サーバーがホストされているプライベート ホスト IP アドレスをスペースで区切ったリスト。
    ENABLE_SIDECAR_PROXY Cassandra と Postgres がサービス メッシュを認識するかどうかを決定します。

    この値を「y」に設定する必要があります。

    ENCRYPT_DATA Consul で使用される Base64 エンコードの暗号鍵。このキーは、ステップ 2: Consul をインストールして認証情報を生成するconsul keygen コマンドを使用して生成しました。

    この値は、クラスタ内のすべてのノードで同じにする必要があります。

    PATH_TO_CA_CERT ノード上の証明書ファイルの場所。このファイルは、ステップ 2: Consul をインストールして認証情報を生成するで生成しました。

    構成ファイルが同じになるように、この場所はクラスタ内のすべてのノードで同じにする必要があります。

    証明書は X509v3 でエンコードする必要があります。

    PATH_TO_CA_KEY ノード上の鍵ファイルの場所。このファイルは、ステップ 2: Consul をインストールして認証情報を生成するで生成しました。

    構成ファイルが同じになるように、この場所はクラスタ内のすべてのノードで同じにする必要があります。

    鍵ファイルは X509v3 でエンコードする必要があります。

    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR

    カスタム証明書を生成する場合に証明書が有効である日数。

    デフォルト値は 365 です。最大値は 7,865 日(5 年)です。

    Apigee mTLS は、上記のプロパティに加えて、マルチデータセンター構成にインストールするときに追加のプロパティを使用します。詳細については、複数のデータセンターの構成をご覧ください。

  3. ENABLE_SIDECAR_PROXY プロパティが "y" に設定されていることを確認してください。
  4. ホスト関連のプロパティで IP アドレスを更新します。各ノードを参照するときは、必ずパブリック IP アドレスではなく、プライベート IP アドレスを使用してください。

    後のステップで、ENCRYPT_DATAPATH_TO_CA_CERTPATH_TO_CA_KEY などの他のプロパティの値を設定します。まだ値を設定していません。

    apigee-mtls 構成プロパティを編集する際は、次の点に注意してください。

    • すべてのプロパティは文字列です。すべてのプロパティの値は、一重引用符または二重引用符で囲む必要があります。
    • ホスト関連の値に複数のプライベート IP アドレスがある場合は、各 IP アドレスをスペースで区切ります。
    • 構成ファイル内のすべてのホスト関連プロパティには、ホスト名やパブリック IP アドレスではなく、プライベート IP アドレスを使用します。
    • プロパティ値の IP アドレスの順序は、クラスタ全体のすべての構成ファイルで同じ順序にする必要があります。
  5. 変更を構成ファイルに保存します。

ステップ 2: Consul をインストールして認証情報を生成する

このセクションでは、Consul をインストールして認証情報を生成する方法について説明します。

認証情報を生成するには、次のいずれかの方法を選択する必要があります。

  • このセクションの説明に従って、Consul を使用して独自の CA を作成する(推奨)
  • Apigee mTLS で既存の CA の認証情報を使用する(上級者向け)

認証情報について

認証情報は以下から構成されます。

  • 証明書: 各ノードでホストされている TLS 証明書
  • 鍵: 各ノードでホストされている TLS 公開鍵
  • ゴシップ メッセージ: Base64 でエンコードされた暗号鍵。

各ファイルの 1 つのバージョンを生成するのは 1 回だけです。鍵ファイルと証明書ファイルをクラスタ内のすべてのノードにコピーし、暗号鍵を構成ファイルに追加して、すべてのノードにコピーします。

Consul の暗号化の実装の詳細については、以下をご覧ください。

Consul をインストールして認証情報を生成する

ローカル Consul バイナリを使用して、Apigee mTLS が Private Cloud クラスタ内のノード間の安全な通信を認証するために使用する認証情報を生成します。そのため、認証情報を生成する前に、管理マシンに Consul をインストールする必要があります。

Consul をインストールして mTLS 認証情報を生成するには:

  1. 管理マシンで、HashiCorp のウェブサイトから Consul 1.6.2 バイナリをダウンロードします。
  2. ダウンロードしたアーカイブ ファイルの内容を抽出します。たとえば、/opt/consul/ にコンテンツを抽出します。
  3. 管理マシンで、次のコマンドを実行して新しい認証局(CA)を作成します。
    /opt/consul/consul tls ca create

    Consul は、証明書と鍵のペアである次のファイルを作成します。

    • consul-agent-ca.pem(証明書)
    • consul-agent-ca-key.pem(キー)

    デフォルトでは、証明書ファイルと鍵ファイルは X509v3 でエンコードされます。

    後で、これらのファイルをクラスタ内のすべてのノードにコピーします。ただし、この時点では、これらのファイルをノードのどこに配置するかのみを決定する必要があります。各ノードの同じロケーションに配置する必要があります。例: /opt/apigee/

  4. 構成ファイルで、PATH_TO_CA_CERT の値をノード上の consul-agent-ca.pem ファイルをコピーする場所に設定します。次に例を示します。
    PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
  5. PATH_TO_CA_KEY の値を、ノード上の consul-agent-ca-key.pem ファイルのコピー先に設定します。次に例を示します。
    PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
  6. 次のコマンドを実行して、Consul の暗号鍵を作成します。
    /opt/consul/consul keygen

    Consul は、次のようなランダム化された文字列を出力します。

    QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=
  7. この文字列をコピーし、構成ファイルの ENCRYPT_DATA プロパティの値として設定します。次に例を示します。
    ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
  8. 構成ファイルを保存します。

次の例は、構成ファイル内の mTLS 関連の設定を示しています(値の例を示しています)。

...
IP1=10.126.0.121
IP2=10.126.0.124
IP3=10.126.0.125
IP4=10.126.0.127
IP5=10.126.0.130
ALL_IP="$IP1 $IP2 $IP3 $IP4 $IP5"
LDAP_MTLS_HOSTS="$IP3"
ZK_MTLS_HOSTS="$IP3 $IP4 $IP5"
CASS_MTLS_HOSTS="$IP3 $IP4 $IP5"
PG_MTLS_HOSTS="$IP2 $IP1"
RT_MTLS_HOSTS="$IP4 $IP5"
MS_MTLS_HOSTS="$IP3"
MP_MTLS_HOSTS="$IP4 $IP5"
QP_MTLS_HOSTS="$IP2 $IP1"
ENABLE_SIDECAR_PROXY="y"
ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
...

ステップ 3: 構成ファイルと認証情報を配布する

scp などのツールを使用して、ZooKeeper を実行しているノードに次のファイルをコピーします。

  • 構成ファイル: このファイルの更新バージョンをコピーし、(ZooKeeper を実行しているノードだけでなく)すべてのノードで既存のバージョンを置き換えます。
  • consul-agent-ca.pem: 構成ファイルの PATH_TO_CA_CERT の値として指定した場所にコピーします。
  • consul-agent-ca-key.pem: 構成ファイルで PATH_TO_CA_KEY の値として指定した場所にコピーします。

証明書と鍵ファイルをコピーする場所が、ステップ 2: Consul をインストールして認証情報を生成するの構成ファイルに設定した値と一致していることを確認します。

ステップ 4: apigee-mtls を初期化する

構成ファイルを更新して、構成ファイルと認証情報をクラスタ内のすべてのノードにコピーし、各ノードに apigee-mtls をインストールしたら、各ノードの apigee-mtls コンポーネントを初期化できます。

apigee-mtls を初期化するには:

  1. クラスタ内のノードに root ユーザーとしてログインします。これらの手順は、任意の順序でノードで実行できます。
  2. 次の例のように、更新された構成ファイルのオーナーを apigee:apigee ユーザーにします。
    chown apigee:apigee config_file
  3. 次のコマンドを実行して、apigee-mtls コンポーネントを構成します。
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f config_file
  4. (省略可)次のコマンドを実行して、設定が正常に完了したことを確認します。
    /opt/apigee/apigee-mtls/lib/actions/iptables.sh validate
  5. 次のコマンドを実行して、Apigee mTLS を起動します。
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls start

    Apigee mTLS をインストールした後、ノード上の他のコンポーネントよりも前にこのコンポーネントを起動する必要があります。

  6. (Cassandra ノードのみ)Cassandra がセキュリティ メッシュ内で機能するには、追加の引数が必要です。そのため、各 Cassandra ノードで次のコマンドを実行する必要があります。
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f config_file
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. (Postgres ノードのみ)Postgres がセキュリティ メッシュ内で機能するには、追加の引数が必要です。そのため、Postgres ノードでは次のことを行う必要があります。

    (マスターのみ)

    1. Postgres マスターノードで次のコマンドを実行します。
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    (スタンバイのみ)

    1. 既存の Postgres データをバックアップします。Apigee mTLS をインストールするには、マスター/スタンバイ ノードを再初期化する必要があります。これによりデータ損失が発生します。詳細については、Postgres のマスター/スタンバイ レプリケーションを設定するをご覧ください。
    2. すべての Postgres データを削除します。
      rm -rf /opt/apigee/data/apigee-postgresql/pgdata
    3. 次の例のように Postgres を構成し、Postgres を再起動します。
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    マルチデータセンター トポロジにインストールする場合は、構成ファイルに絶対パスを使用します。

  8. 次の例のように、ノード上の残りの Apigee コンポーネントを起動順序で起動します。
    /opt/apigee/apigee-service/bin/apigee-service component_name start
  9. クラスタ内のノードごとにこのプロセスを繰り返します。
  10. (省略可)次の 1 つ以上の方法を使用して、apigee-mtls の初期化が成功したことを確認します。
    1. iptables の構成を検証する
    2. リモート プロキシのステータスを確認する
    3. クォーラムのステータスを確認する

    これらの各方法については、構成を確認するをご覧ください。

既存の apigee-mtls 構成を変更する

既存の apigee-mtls 構成をカスタマイズするには、apigee-mtls をアンインストールして再インストールする必要があります。

既存の Apigee mTLS 構成を変更する場合は、次の操作を行います。

  • 構成ファイルを変更する場合は、まず apigee-mtls をアンインストールしてから、setup または configure を再実行する必要があります。
    # DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls uninstall
    
    # BEFORE YOU DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f file
    OR
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls configure
  • 単一ノードだけでなく、クラスタ内のすべてのノードで setup または configure をアンインストールして再実行する必要があります。