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 사용자 인증 정보를 생성합니다 (한 번만).

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

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

    요구사항에 따라 ZooKeeper 노드는 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입니다. 최대 값은 7865일 (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 주소가 두 개 이상 있는 경우 각 IP 주소를 공백으로 구분합니다.
    • 구성 파일의 모든 호스트 관련 속성에 호스트 이름이나 공개 IP 주소가 아닌 비공개 IP 주소를 사용합니다.
    • 속성 값의 IP 주소 순서는 클러스터의 모든 구성 파일에서 동일해야 합니다.
  5. 변경 사항을 구성 파일에 저장합니다.

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

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

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

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

사용자 인증 정보

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

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

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

Consul의 암호화 구현에 관한 자세한 내용은 다음을 참고하세요.

Consul 설치 및 사용자 인증 정보 생성

로컬 Consul 바이너리를 사용하여 Apigee mTLS가 프라이빗 클라우드 클러스터의 노드 간에 보안 통신을 인증하는 데 사용하는 사용자 인증 정보를 생성합니다. 따라서 사용자 인증 정보를 생성하려면 먼저 관리 머신에 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과 같은 도구를 사용하여 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. 클러스터의 노드에 루트 사용자로 로그인합니다. 노드에서 원하는 순서대로 이 단계를 수행할 수 있습니다.
  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를 제거하고 다시 실행해야 합니다.