クラスタ内のすべてのノードに Apigee mTLS をインストールしたら、apigee-mtls
コンポーネントを構成して初期化する必要があります。これを行うには、証明書と鍵のペアを生成し、管理マシンの構成ファイルを更新します。次に、同じ生成されたファイルと構成ファイルをクラスタ内のすべてのノードにデプロイし、ローカルの apigee-mtls
コンポーネントを初期化します。
apigee-mtls を構成する(初期インストール後)
このセクションでは、最初のインストールの直後に Apigee mTLS を構成する方法について説明します。Apigee mTLS の既存のインストールを更新する方法については、既存の apigee-mtls 構成を変更するをご覧ください。
このセクションは、単一のデータセンターへのインストールを対象としています。複数のデータセンター設定で Apigee mTLS を構成する方法については、Apigee mTLS 用に複数のデータセンターを構成するをご覧ください。
apigee-mtls
を構成する一般的なプロセスは次のとおりです。
- 構成ファイルを更新する: 管理マシンで構成ファイルを更新して、
apigee-mtls
設定を含めます。 - Consul をインストールして認証情報を生成する: Consul をインストールし、(必要に応じて)Consul を使用して TLS 認証情報を生成します(1 回のみ)。
さらに、Apigee mTLS 構成ファイルを次のように編集します。
- 認証情報を追加する
- クラスタのトポロジを定義する
既存の認証情報を使用することも、Consul で認証情報を生成することもできます。
- 認証情報と構成ファイルを配布する: 生成された同じ証明書と鍵のペアと更新された構成ファイルをクラスタ内のすべてのノードに配布します。
- apigee-mtls を初期化する: 各ノードで
apigee-mtls
コンポーネントを初期化します。
それぞれの手順は、次のセクションで説明します。
ステップ 1: 構成ファイルを更新する
このセクションでは、mTLS 構成プロパティを含めるように構成ファイルを変更する方法について説明します。構成ファイルの一般的な情報については、構成ファイルの作成をご覧ください。
mTLS 関連のプロパティで構成ファイルを更新したら、クラスタ内のすべてのノードにコピーしてから、それらのノードの apigee-mtls
コンポーネントを初期化します。
構成ファイルを更新するには:
- 管理マシンで、構成ファイルを開いて編集します。
- 次の一連の 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" TLS_MIN_VERSION="tls12" TLS_CIPHER_SUITES="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
実際の構成に合わせて、各プロパティの値を設定します。
次の表に、これらの構成プロパティを示します。
プロパティ 説明 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 年)です。
TLS_MIN_VERSION
許可される最小の TLS バージョンを指定します。TLS 1.2 以上を適用するには、 tls12
に設定します。TLS_CIPHER_SUITES
許可された TLS 暗号スイートのカンマ区切りリスト。 例:
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Apigee mTLS をマルチデータセンター構成にインストールする場合、上記のプロパティに加えて、いくつかの追加プロパティを使用します。詳細については、複数のデータセンターを構成するをご覧ください。
ENABLE_SIDECAR_PROXY
が「y」に設定されていることを確認します。- ホスト関連のプロパティで IP アドレスを更新します。各ノードを参照する場合は、パブリック IP アドレスではなくプライベート IP アドレスを使用してください。
後のステップで、
ENCRYPT_DATA
、PATH_TO_CA_CERT
、PATH_TO_CA_KEY
などの他のプロパティの値を設定します。値はまだ設定されていません。apigee-mtls
構成プロパティを編集する場合は、次の点に注意してください。- プロパティはすべて文字列です。すべてのプロパティの値を一重引用符または二重引用符で囲む必要があります。
- ホスト関連の値に複数のプライベート IP アドレスがある場合は、各 IP アドレスをスペースで区切ります。
- 構成ファイル内のホスト関連のすべてのプロパティには、ホスト名やパブリック IP アドレスではなく、プライベート IP アドレスを使用します。
- プロパティ値の IP アドレスの順序は、クラスタ全体のすべての構成ファイルで同じ順序にする必要があります。
- 変更を構成ファイルに保存します。
ステップ 2: Consul をインストールして認証情報を生成する
このセクションでは、Consul をインストールして、mTLS 対応コンポーネントで使用される認証情報を生成する方法について説明します。
認証情報を生成するには、次のいずれかの方法を選択する必要があります。
- (推奨)このセクションの説明に従って、Consul を使用して独自の認証局(CA)を作成する
- Apigee mTLS で既存の CA の認証情報を使用する(高度)
認証情報について
認証情報は次の要素で構成されます。
- 証明書: TLS 証明書
- 鍵: TLS 公開鍵
- Gossip メッセージ: Base64 でエンコードされた暗号鍵
これらの各ファイルの 1 つのバージョンを 1 回だけ生成します。次に、鍵と証明書ファイルをクラスタ内のすべてのノードにコピーし、構成ファイルに暗号鍵を追加します。構成ファイルは、すべてのノードにもコピーします。
Consul の暗号化の実装の詳細については、以下をご覧ください。
Consul をインストールして認証情報を生成する
Apigee mTLS が Private Cloud クラスタ内のノード間の安全な通信の認証に使用する認証情報を生成するには、ローカル Consul バイナリを使用します。そのため、認証情報を生成するには、管理マシンに Consul をインストールする必要があります。
Consul をインストールして mTLS 認証情報を生成するには:
- 管理マシンで、HashiCorp ウェブサイトから Consul 1.8.0 バイナリをダウンロードします。
- ダウンロードしたアーカイブ ファイルの内容を抽出します。たとえば、内容を
/opt/consul/
に抽出します。 - 管理マシンで、次のコマンドを実行して新しい認証局(CA)を作成します。
/opt/consul/consul tls ca create
Consul は、証明書と鍵のペアを形成する次のファイルを作成します。
consul-agent-ca.pem
(証明書)consul-agent-ca-key.pem
(鍵)
デフォルトでは、証明書ファイルと鍵ファイルは X509v3 でエンコードされます。
後で、これらのファイルをクラスタ内のすべてのノードにコピーします。ただし、現時点では、これらのファイルをノードのどこに置くかを決める必要があります。各ノードの同じロケーションに配置する必要があります。例:
/opt/apigee/
- 構成ファイルの
PATH_TO_CA_CERT
の値を、ノード上のconsul-agent-ca.pem
ファイルのコピー先に設定します。次に例を示します。PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
PATH_TO_CA_KEY
の値を、ノード上のconsul-agent-ca-key.pem
ファイルのコピー先に設定します。次に例を示します。PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
- 次のコマンドを実行して、Consul の暗号鍵を作成します。
/opt/consul/consul keygen
Consul は、次のようなランダムな文字列を出力します。
QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=
- この生成された文字列をコピーして、構成ファイル内の
ENCRYPT_DATA
プロパティの値として設定します。次に例を示します。ENCRYPT_DATA="
QbhgD+EXAMPLE+Y9u0742X
/IqX3X429/x1cIQ+JsQvY=" - 構成ファイルを保存します。
次の例は、構成ファイル内の 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 を初期化するには:
- クラスタ内のノードに root ユーザーとしてログインします。これらの手順は、ノードに対して任意の順序で行うことができます。
- 次の例のように、
apigee:apigee
ユーザーを更新された構成ファイルのオーナーにします。chown apigee:apigee config_file
- 次のコマンドを実行して、
apigee-mtls
コンポーネントを構成します。/opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f config_file
- (省略可)次のコマンドを実行して、設定が正常に完了したことを確認します。
/opt/apigee/apigee-mtls/lib/actions/iptables.sh validate
- 次のコマンドを実行して、Apigee mTLS を起動します。
/opt/apigee/apigee-service/bin/apigee-service apigee-mtls start
Apigee mTLS をインストールしたら、ノード上の他のコンポーネントよりも前にこのコンポーネントを起動する必要があります。
- (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
- (Postgres ノードのみ)Postgres をセキュリティ メッシュ内で機能させるには、追加の引数が必要です。そのため、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
(スタンバイのみ)
- 既存の Postgres データをバックアップします。Apigee mTLS をインストールするには、プライマリ/スタンバイ ノードを再初期化する必要があります。そうするとデータが失われるためです。詳細については、Postgres のプライマリ/スタンバイ レプリケーションを設定するをご覧ください。
- すべての Postgres データを削除します。
rm -rf /opt/apigee/data/apigee-postgresql/pgdata
- 次の例のように、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
マルチデータセンター トポロジにインストールする場合は、構成ファイルの絶対パスを使用します。
- Postgres プライマリ ノードで次のコマンドを実行します。
- 次の例のように、ノード上の残りの Apigee コンポーネントを起動順序に従って起動します。
/opt/apigee/apigee-service/bin/apigee-service component_name start
- クラスタ内のノードごとにこの手順を繰り返します。
- (省略可)次の 1 つ以上のメソッドを使用して、
apigee-mtls
の初期化が成功したことを確認します。- iptables の構成を検証する
- リモート プロキシのステータスを確認する
- クォーラムのステータスを確認する
これらの各方法については、構成を確認するをご覧ください。
既存の 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
をアンインストールして再実行する必要があります。