Apigee mTLS 구성

Private Cloud용 Edge v4.19.01

클러스터의 모든 노드에 apigee-mtls 구성요소를 설치한 후에는 구성요소를 구성하고 초기화해야 합니다. 이렇게 하려면 인증서/키 쌍을 생성하고 관리 머신에서 구성 파일을 업데이트하면 됩니다. 그런 다음 생성된 동일한 파일을 클러스터의 모든 노드에 배포하고 로컬 apigee-mtls 구성요소를 초기화합니다.

apigee-mtls 구성 (초기 설치 후)

이 섹션에서는 초기 설치 직후 단일 데이터 센터에 Apigee mTLS를 구성하는 방법을 설명합니다. Apigee mTLS의 기존 설치를 업데이트하는 방법은 기존 apigee-mtls 구성 변경을 참조하세요. 여러 데이터 센터를 구성하는 방법에 대한 자세한 내용은 Apigee mTLS를 위한 여러 데이터 센터 구성을 참조하세요.

다음은 apigee-mtls를 구성하는 일반적인 프로세스입니다.

  1. 구성 파일 업데이트: 관리 머신에서 apigee-mtls 설정을 포함하도록 구성 파일을 업데이트합니다.
  2. Consul 설치 및 사용자 인증 정보 생성: Consul을 설치하고 이를 사용하여 TLS 사용자 인증 정보를 생성합니다 (한 번만).

    또한 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

    클러스터에서 JoKeeper 노드가 호스팅되는 비공개 호스트 IP 주소의 공백으로 구분된 목록입니다.

    요구사항에 따라 주Keeper 노드가 3개 이상 있어야 합니다.

    CASS_MTLS_HOSTS 클러스터에서 Cassandra 서버가 호스팅되는 비공개 호스트 IP 주소의 공백으로 구분된 목록입니다.
    PG_MTLS_HOSTS 클러스터에서 Postgres 서버가 호스팅되는 비공개 호스트 IP 주소의 공백으로 구분된 목록입니다.
    RT_MTLS_HOSTS 클러스터에서 라우터가 호스팅되는 비공개 호스트 IP 주소의 공백으로 구분된 목록입니다.
    MTLS_ENCAPSULATE_LDAP 메시지 프로세서와 LDAP 서버 간의 LDAP 트래픽을 암호화합니다. y로 설정합니다.
    MS_MTLS_HOSTS 클러스터에서 관리 서버 노드가 호스팅되는 비공개 호스트 IP 주소의 공백으로 구분된 목록입니다.
    MP_MTLS_HOSTS 클러스터에서 메시지 프로세서가 호스팅되는 비공개 호스트 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_DATA, PATH_TO_CA_CERT, PATH_TO_CA_KEY와 같은 다른 속성의 값을 설정합니다. 아직 값을 설정하지 않았습니다.

    apigee-mtls 구성 속성을 수정할 때는 다음 사항에 유의하세요.

    • 모든 속성은 문자열입니다. 모든 속성 값을 작은따옴표나 큰따옴표로 묶어야 합니다.
    • 호스트 관련 값에 비공개 IP 주소가 2개 이상 있으면 각 IP 주소를 공백으로 구분합니다.
    • 구성 파일에서 모든 호스트 관련 속성에 대한 호스트 이름이나 공개 IP 주소가 아닌 비공개 IP 주소를 사용합니다.
    • 속성 값의 IP 주소 순서는 클러스터의 모든 구성 파일에서 동일해야 합니다.
  5. 변경 사항을 구성 파일에 저장합니다.

2단계: Consul 설치 및 사용자 인증 정보 생성

이 섹션에서는 Consul을 설치하고 사용자 인증 정보를 생성하는 방법을 설명합니다.

사용자 인증 정보를 생성하려면 다음 방법 중 하나를 선택해야 합니다.

  • 이 섹션에 설명된 대로 Consul을 사용하여 자체 CA 만들기 (권장)
  • Apigee mTLS로 기존 CA의 사용자 인증 정보 사용 (고급)

사용자 인증 정보

사용자 인증 정보는 다음으로 구성됩니다.

  • 인증서: 각 노드에서 호스팅되는 TLS 인증서
  • 키: 각 노드에서 호스팅되는 TLS 공개 키입니다.
  • 가십 메시지: base64로 인코딩된 암호화 키입니다.

이러한 각 파일의 단일 버전은 한 번만 생성합니다. 키와 인증서 파일을 클러스터의 모든 노드에 복사하고 암호화 키를 구성 파일에 추가하고 이 암호화 키를 모든 노드에도 복사합니다.

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와 같은 도구를 사용하여 다음 파일을 JoKeeper를 실행하는 노드에 복사합니다.

  • 구성 파일: 이 파일의 업데이트된 버전을 복사하고 JoKeeper를 실행하는 노드뿐만 아니라 모든 노드의 기존 버전을 바꿉니다.
  • 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. 클러스터의 노드에 루트 사용자로 로그인합니다. 원하는 순서대로 노드에서 이 단계를 수행할 수 있습니다.
  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. (선택사항) 다음 메서드 중 하나 이상을 사용하여 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를 제거한 후 다시 실행해야 합니다.