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_fileconfig_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 公開鍵
  • Gossip メッセージ: 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

    次のようなランダムな文字列が出力されます。

    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 を構成して再起動します。
      /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 をアンインストールして再実行する必要があります。