クラスタ内のすべてのノードに apigee-mtls コンポーネントをインストールしたら、構成して初期化する必要があります。これを行うには、証明書と鍵ペアを生成し、管理マシンの構成ファイルを更新します。次に、生成された同じファイルをクラスタ内のすべてのノードにデプロイし、ローカルの apigee-mtls コンポーネントを初期化します。
apigee-mtls を構成する(初期インストール後)
このセクションでは、最初のインストール直後に単一のデータセンター用に Apigee mTLS を構成する方法について説明します。Apigee mTLS の既存のインストールを更新する方法については、既存の apigee-mtls 構成を変更するをご覧ください。複数のデータセンターの構成については、Apigee mTLS を使用するように複数のデータセンターを構成するをご覧ください。
apigee-mtls を構成する一般的なプロセスは次のとおりです。
- 構成ファイルを更新する: 管理マシンで、
apigee-mtls設定が含まれるように構成ファイルを更新します。 - Consul をインストールして認証情報を生成する: Consul をインストールし、それを使用して TLS 認証情報を生成します(1 回のみ)。
また、Apigee mTLS 構成ファイルを次のように編集します。
- 認証情報を追加する
- クラスタのトポロジを定義する
既存の認証情報を使用することも、Consul で生成することもできます。
- 構成ファイルと認証情報を配布する: 生成された同じ証明書/鍵ペアと更新された構成ファイルを、クラスタ内のすべてのノードに配布します。
- apigee-mtls を初期化する: 各ノードで
apigee-mtlsコンポーネントを初期化します。
それぞれの手順は、次のセクションで説明します。
ステップ 1: 構成ファイルを更新する
このセクションでは、mTLS 構成プロパティを含むように構成ファイルを変更する方法について説明します。構成ファイルに関する一般的な情報については、構成ファイルの作成をご覧ください。
mTLS 関連のプロパティで構成ファイルを更新したら、クラスタ内のすべてのノードにコピーしてから、それらのノードで apigee-mtls コンポーネントを初期化します。
構成ファイルを参照するコマンドでは、config_file を使用して、各ノードに保存する場所に応じて場所が可変であることを示します。
構成ファイルを更新するには:
- 管理マシンで構成ファイルを開きます。
- 次の 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 アドレスのスペース区切りリスト。
要件に基づき、ZooKeeper ノードが 3 つ以上必要です。
CASS_MTLS_HOSTSクラスタで Cassandra サーバーがホストされているプライベート ホスト IP アドレスのスペース区切りのリスト。 PG_MTLS_HOSTSクラスタ内で Postgres サーバーがホストされているプライベート ホスト IP アドレスのスペース区切りのリスト。 RT_MTLS_HOSTSクラスタ内で Router がホストされているプライベート ホスト IP アドレスのスペース区切りリスト。 MTLS_ENCAPSULATE_LDAPMessage Processor と LDAP サーバー間の LDAP トラフィックを暗号化します。 yに設定します。MS_MTLS_HOSTSクラスタで Management Server ノードがホストされているプライベート ホスト IP アドレスのスペース区切りのリスト。 MP_MTLS_HOSTSクラスタ内で Message Processor がホストされているプライベート ホスト IP アドレスのスペース区切りリスト。 QP_MTLS_HOSTSクラスタ内で Qpid サーバーがホストされているプライベート ホスト IP アドレスのスペース区切りのリスト。 ENABLE_SIDECAR_PROXYCassandra と Postgres がサービス メッシュを認識する必要があるかどうかを決定します。 この値は「y」に設定する必要があります。
ENCRYPT_DATAConsul で使用される 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 をマルチデータセンター構成にインストールする場合は、いくつかの追加プロパティを使用します。詳細については、複数のデータセンターを構成するをご覧ください。
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 をインストールして認証情報を生成する方法について説明します。
認証情報を生成するには、次のいずれかの方法を選択する必要があります。
- このセクションの説明に沿って、Consul を使用して独自の CA を作成する(推奨)
- Apigee mTLS で既存の CA の認証情報を使用する(上級者向け)
認証情報について
認証情報は次の要素で構成されます。
- 証明書: 各ノードでホストされている TLS 証明書
- 鍵: 各ノードでホストされている TLS 公開鍵
- Gossip メッセージ: Base64 でエンコードされた暗号鍵
これらの各ファイルの単一バージョンを 1 回だけ生成します。鍵ファイルと証明書ファイルをクラスタ内のすべてのノードにコピーし、暗号鍵を構成ファイルに追加して、すべてのノードにコピーします。
Consul の暗号化の実装の詳細については、以下をご覧ください。
Consul をインストールして認証情報を生成する
ローカルの Consul バイナリを使用して、Apigee mTLS がプライベート クラウド クラスタ内のノード間の安全な通信を認証するために使用する認証情報を生成します。そのため、認証情報を生成する前に、管理マシンに Consul をインストールする必要があります。
Consul をインストールして mTLS 認証情報を生成するには:
- 管理マシンで、HashiCorp のウェブサイトから Consul 1.6.2 バイナリをダウンロードします。
- ダウンロードしたアーカイブ ファイルの内容を抽出します。たとえば、コンテンツを
/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 を実行しているノードに次のファイルをコピーします。
- 構成ファイル: このファイルの更新バージョンをコピーし、すべてのノード(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
- クラスタ内の各ノードに対してこのプロセスを繰り返します。
- (省略可)次のいずれかの方法で、
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 fileOR/opt/apigee/apigee-service/bin/apigee-service apigee-mtls configure - 単一のノードだけでなく、クラスタ内のすべてのノードで
setupまたはconfigureをアンインストールして再実行する必要があります。