Apigee mTLS を構成する

クラスタ内のすべてのノードに Apigee mTLS をインストールしたら、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 コンポーネントを初期化します。

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

  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 をインストールして、mTLS 対応コンポーネントで使用される認証情報を生成する方法について説明します。

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

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

認証情報について

認証情報は次のものから構成されます。

  • 証明書: TLS 証明書
  • 鍵: TLS 公開鍵
  • Gossip メッセージ: Base64 でエンコードされた暗号鍵

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

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

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

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

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

  1. 管理マシンで、HashiCorp のウェブサイトから Consul 1.8.0 バイナリをダウンロードします。
  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 を実行しているノードだけでなく、すべてのノードで既存のバージョンを置き換えます。
  • 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 をアンインストールして再実行する必要があります。