Apigee mTLS 구성

클러스터의 모든 노드에 Apigee mTLS를 설치한 후에는 다음을 수행합니다. apigee-mtls 구성요소를 구성하고 초기화해야 합니다. 이렇게 하려면 인증서/키 쌍을 추가하고 구성 파일을 관리 머신에 설치합니다. 그런 다음 생성된 동일한 파일 및 구성 파일을 클러스터의 모든 노드에 적용하고 apigee-mtls 구성요소.

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

이 섹션에서는 다음을 완료한 후 직접 Apigee mTLS를 구성하는 방법을 설명합니다. 초기 설치를 해야 합니다. GCP Console의 기존 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 구성요소를 초기화하기 전에 클러스터의 모든 노드 노드라는 두 가지 리소스가 있습니다

구성 파일을 업데이트하려면 다음 안내를 따르세요.

  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 주소의 순서는 중요하지 않습니다. 단, 모든 IP 주소가 동일해야 합니다. kube-apiserver와 통신하는 역할을 합니다

    여러 데이터 센터에 Apigee mTLS를 구성하는 경우 다음 항목을 나열하세요. 모든 리전의 모든 호스트에 대한 모든 IP 주소가 생성됩니다

    LDAP_MTLS_HOSTS 클러스터에 있는 OpenLDAP 노드의 비공개 호스트 IP 주소입니다.
    ZK_MTLS_HOSTS

    주키퍼 노드가 호스팅되는 비공개 호스트 IP 주소의 공백으로 구분된 목록 kube-APIserver입니다

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

    CASS_MTLS_HOSTS Cassandra 서버가 호스팅되는 공백으로 구분된 비공개 호스트 IP 주소의 목록 kube-APIserver입니다
    PG_MTLS_HOSTS Postgres 서버가 호스팅되는 비공개 호스트 IP 주소의 공백으로 구분된 목록 kube-APIserver입니다
    RT_MTLS_HOSTS 라우터가 호스팅되는 비공개 호스트 IP 주소의 공백으로 구분된 목록은 kube-APIserver입니다
    MTLS_ENCAPSULATE_LDAP 메시지 프로세서와 LDAP 서버 간의 LDAP 트래픽을 암호화합니다. 다음으로 설정 y
    MS_MTLS_HOSTS 관리 서버 노드가 있는 비공개 호스트 IP 주소의 공백으로 구분된 목록 kube-apiserver와 통신하는 역할을 합니다
    MP_MTLS_HOSTS 메시지 프로세서가 있는 비공개 호스트 IP 주소의 공백으로 구분된 목록 kube-apiserver와 통신하는 역할을 합니다
    QP_MTLS_HOSTS Qpid 서버가 호스팅되는 비공개 호스트 IP 주소의 공백으로 구분된 목록 kube-APIserver입니다
    ENABLE_SIDECAR_PROXY Cassandra 및 Postgres가 서비스 메시를 인식해야 하는지 여부를 결정합니다.

    이 값은 'y'로 설정해야 합니다.

    ENCRYPT_DATA Consul에서 사용하는 base64로 인코딩된 암호화 키입니다. 이 키는 다음을 사용하여 생성했습니다. consul keygen 명령어 2단계: Consul 설치 및 사용자 인증 정보를 생성합니다.

    이 값은 클러스터에 있는 모든 노드에서 동일해야 합니다.

    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 주소를 업데이트합니다. 반드시 각 노드를 참조할 때 public IP 주소가 아닌 private IP 주소를 사용할 수 있습니다

    이후 단계에서 ENCRYPT_DATA, PATH_TO_CA_CERT, PATH_TO_CA_KEY 필요한 작업: 아직 값을 설정하지 않았습니다.

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

    • 모든 속성은 문자열입니다. 모든 속성의 값을 단일 또는 이중으로 래핑해야 합니다. 인용부호 포함.
    • 호스트 관련 값에 비공개 IP 주소가 2개 이상인 경우 각 IP 주소를 구분하세요. 입력합니다.
    • 모든 호스트 관련 작업에 호스트 이름이나 공개 IP 주소가 아닌 비공개 IP 주소를 사용하세요. 구성 파일에 있습니다.
    • 속성 값의 IP 주소 순서는 모든 kube-apiserver와 통신하는 역할을 합니다
  5. 변경 사항을 구성 파일에 저장합니다.

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

이 섹션에서는 Consul을 설치하고 구성 요소가 포함됩니다

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

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

사용자 인증 정보

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

  • 인증서: TLS 인증서
  • 키: TLS 공개 키
  • 가십 메시지: base-64로 인코딩된 암호화 키

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

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

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

Apigee mTLS에서 사용할 사용자 인증 정보 생성 프라이빗 클라우드 클러스터의 노드 간 보안 통신을 인증하려면 로컬 Consul 바이너리 . 그 결과 먼저 관리 머신에 Consul을 설치해야 합니다. 사용자 인증 정보를 생성합니다

Consul을 설치하고 mTLS 사용자 인증 정보를 생성하려면 다음 안내를 따르세요.

  1. 관리 컴퓨터에서 Consul 1.8.0 바이너리를 HashiCorp 웹사이트.
  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를 실행하는 노드뿐만 아니라) 모든 노드의 기존 버전이 생성됩니다.
  • 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. 클러스터의 노드에 루트 사용자로 로그인합니다. Cloud Shell의 노드에서 이러한 단계를 원하는 순서로 수행할 수 있습니다.
  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 초기화가 성공했는지 확인합니다. 다음 중 하나 이상의 메서드를 사용합니다. <ph type="x-smartling-placeholder">
      </ph>
    1. iptables 구성 유효성 검사
    2. 원격 프록시 상태 확인
    3. 쿼럼 상태 확인

    각 방법은 구성을 참조하세요.

기존 apigee-mtls 구성 변경

기존 apigee-mtls 구성을 맞춤설정하려면 apigee-mtls를 재설치합니다. 또한 맞춤설정이 모든 Google 계정에 노드라는 두 가지 리소스가 있습니다

이 점을 재차 강조하자면 기존 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를 제거하고 다시 실행해야 합니다. 단일 노드가 아닌
를 통해 개인정보처리방침을 정의할 수 있습니다.