Apigee mTLS 소개

Apigee mTLS 기능은 Private Cloud용 Edge 클러스터의 구성요소 간 통신에 보안을 추가합니다. 서비스 메시를 구성하고 설치하는 업계 표준 방법을 제공합니다. 패키지 관리 및 구성 자동화를 지원합니다.

아키텍처 개요

구성요소 간 보안 통신을 제공하기 위해 Apigee mTLS는 구성요소 간에 보안되고 상호 인증된 TLS 연결을 설정하는 서비스 메시를 사용합니다.

다음 이미지는 Apigee mTLS로 보호되는 Apigee 구성요소 간의 연결을 보여줍니다 (in red). 이미지에 표시된 포트는 예시입니다. 각 구성요소에서 사용할 수 있는 범위 목록은 포트 사용을 참고하세요.

('M'으로 표시된 포트는 구성요소를 관리하는 데 사용되며 관리 서버에서 액세스할 수 있도록 구성요소에서 열려 있어야 합니다.)

위 다이어그램에서 볼 수 있듯이 Apigee mTLS는 다음을 비롯한 클러스터의 대부분의 구성요소 간 연결에 보안을 추가합니다.

소스 대상
관리 서버 라우터, MP, QPid, LDAP, Postgres, Zookeeper, Cassandra 노드
라우터 루프백, Qpid, Zookeeper, Cassandra 노드
메시지 프로세서 루프백, Qpid, Zookeeper, Cassandra 노드
ZooKeeper 및 Cassandra 기타 Zookeeper 및 Cassandra 노드
Edge UI SMTP (외부 IDP만 해당)
Postgres 기타 Postgres, Zookeeper, Cassandra 노드

메시지 암호화/복호화

Apigee mTLS 서비스 메시지는 클러스터의 각 ZooKeeper 노드에서 실행되는 Consul 서버와 클러스터의 모든 노드에서 실행되는 다음 Consul 서비스로 구성됩니다.

  • 호스트 노드에서 발신 메시지를 가로채는 이그레스 프록시 이 서비스는 발신 메일을 암호화한 후 목적지로 전송합니다.
  • 호스트 노드에서 수신 메일을 가로채는 인그레스 프록시 이 서비스는 수신 메시지를 최종 목적지로 전송하기 전에 복호화합니다.

예를 들어 관리 서버가 라우터에 메시지를 보내면 이그레스 프록시 서비스가 나가는 메시지를 가로채 암호화한 후 라우터에 보냅니다. 라우터의 노드가 메시지를 수신하면 인그레스 프록시 서비스가 메시지를 복호화한 후 처리할 라우터 구성요소에 전달합니다.

이 모든 과정은 Edge 구성요소에 투명하게 이루어집니다. Edge 구성요소는 Consul 프록시 서비스에서 실행하는 암호화 및 복호화 프로세스를 인식하지 못합니다.

또한 Apigee mTLS는 트래픽 리디렉션을 관리하는 Linux 방화벽 서비스인 iptables 유틸리티를 사용합니다.

요구사항

Apigee mTLS를 설치하려면 환경이 다음 요구사항을 충족해야 합니다.

다음 섹션에서는 이러한 각 요구사항을 자세히 설명합니다.

토폴로지 요구사항

Apigee mTLS를 사용하려면 환경의 토폴로지에 ZooKeeper 노드가 3개 이상 포함되어야 합니다. 따라서 5, 9, 12 (다중 데이터 센터) 또는 13개 노드를 사용하는 토폴로지에만 Apigee mTLS를 설치할 수 있습니다. 자세한 내용은 설치 토폴로지를 참고하세요.

유틸리티/패키지

Apigee mTLS를 사용하려면 설치 프로세스를 시작하기 전에 관리 머신을 비롯한 클러스터의 각 머신에 다음 패키지가 설치되고 사용 설정되어 있어야 합니다.

유틸리티/패키지 설명 설치 후 삭제해도 되나요?
base64 설치 스크립트 내에서 데이터를 확인합니다.
gnu-bash
gnu-sed
gnu-grep
설치 스크립트 및 기타 일반적인 도구에서 사용됩니다.
iptables 기본 방화벽인 firewalld를 대체합니다.
iptables-services iptables 유틸리티에 기능을 제공합니다.
lsof 설치 스크립트에서 사용됩니다.
nc iptables 경로를 확인합니다.
openssl 초기 부트스트랩 프로세스 중에 로컬로 인증서에 서명합니다.

설치 중에 사용자 인증 정보와 암호화 키를 생성할 수 있도록 관리 머신에 Consul 패키지도 설치합니다.

apigee-mtls 패키지는 클러스터의 ZooKeeper 노드에 수신 및 송신 프록시를 비롯한 Consul 서버를 설치하고 구성합니다.

사용자 계정 권한

설치하기 전에 새 사용자 계정을 만들거나 권한이 상승된 계정에 액세스할 수 있는지 확인합니다.

클러스터의 각 노드에서 Apigee mTLS 설치를 실행하는 계정은 다음을 할 수 있어야 합니다.

  • Apigee 구성요소 시작, 중지, 다시 시작, 초기화
  • 방화벽 규칙 설정
  • 새 OS/시스템 사용자 계정 만들기
  • systemctl로 서비스 사용 설정, 사용 중지, 시작, 중지, 마스크 처리

관리 머신 (권장)

Apigee에서는 클러스터 내에 다음을 비롯해 이 문서에 설명된 다양한 관리 작업을 실행할 수 있는 노드를 보유할 것을 권장합니다.

  1. HashiCorp Consul 1.6.2를 설치합니다.
  2. 인증서/키 쌍과 가십 암호화 키를 생성하고 배포합니다.
  3. 구성 파일을 업데이트하고 배포합니다.

관리 머신을 설정할 때는 다음을 충족해야 합니다.

  • 루트 액세스 권한이 있는지 확인합니다.
  • Edge apigee-setup 유틸리티 설치에 설명된 대로 apigee-serviceapigee-setup 유틸리티를 다운로드하여 설치합니다.
  • 관리 머신에서 scp/ssh을 사용하여 클러스터의 모든 노드에 액세스할 수 있는지 확인합니다. 구성 파일과 사용자 인증 정보를 배포할 수 있도록 해야 합니다.

포트 사용 및 할당

이 섹션에서는 Apigee mTLS와의 Consul 통신을 지원하기 위한 포트 사용 및 포트 할당을 설명합니다.

포트 사용: apigee-mtls를 실행하는 모든 노드

apigee-mtls 서비스를 사용하는 클러스터의 모든 노드는 localhost (127.0.0.1)의 서비스에서 연결을 허용해야 합니다. 이렇게 하면 Consul 프록시가 수신 및 발신 메시지를 처리할 때 다른 서비스와 통신할 수 있습니다.

포트 사용: Consul 서버 노드 (ZooKeeper를 실행하는 노드)

클러스터의 모든 노드에서 요청을 수락하려면 Consul 서버 노드 (ZooKeeper를 실행하는 노드)에서 다음 포트 대부분을 열어야 합니다.

노드 Consul 서버 포트 설명 프로토콜 외부 mtls-agent 허용
*
Consul 서버 (ZooKeeper 노드) 8300 클러스터의 모든 Consul 서버를 연결합니다. RPC
8301 클러스터 내에서 멤버십 및 브로드캐스트 메시지를 처리합니다. UDP/TCP
8302 다중 데이터 센터 구성에서 멤버십 및 브로드캐스트 메시지를 처리하는 WAN 포트 UDP/TCP
8500 동일한 노드의 프로세스에서 Consul 서버 API로의 HTTP 연결을 처리합니다.

이 포트는 원격 통신이나 조정에 사용되지 않으며 localhost에서만 수신 대기합니다.

HTTP
8502 클러스터의 다른 노드에서 Consul 서버 API로의 gRPC+HTTPS 연결을 처리합니다. gRPC+HTTPS
8503 클러스터의 다른 노드에서 Consul 서버 API로의 HTTPS 연결을 처리합니다. HTTPS
8600 Consul 서버의 DNS를 처리합니다. UDP/TCP
* Apigee에서는 인바운드 요청을 클러스터 구성원으로만 제한하는 것이 좋습니다(크로스 데이터 스토어 포함). iptables을 사용하면 됩니다.

이 표에 표시된 것처럼 consul-server 구성요소 (ZooKeeper 노드)를 실행하는 노드는 데이터 센터 간에도 apigee-mtls 서비스를 실행하는 클러스터의 모든 구성원에게 포트 8301, 8302, 8502, 8503을 열어야 합니다. ZooKeeper를 실행하지 않는 노드는 이러한 포트를 열지 않아도 됩니다.

모든 Consul 노드 (ZooKeeper를 실행하는 노드포함)의 포트 할당

Consul 통신을 지원하려면 다음 Apigee 구성요소를 실행하는 노드에서 다음 범위 내의 포트에 대한 외부 연결을 허용해야 합니다.

Apigee 구성요소 범위 노드당 필요한 포트 수
Apigee mTLS 10700~10799 1
Cassandra 10100~10199 2
메시지 프로세서 10500~10599 2
SymasLDAP 10200~10299 1
Postgres 10300~10399 3
Qpid 10400~10499 2
라우터 10600~10699 2
ZooKeeper 10000~10099 3

Consul은 간단한 선형 방식으로 포트를 할당합니다. 예를 들어 클러스터에 Postgres 노드가 두 개 있는 경우 첫 번째 노드는 포트 두 개를 사용하므로 Consul에서 포트 10300과 10301을 할당합니다. 두 번째 노드도 두 개의 포트를 사용하므로 Consol에서는 해당 노드에 10302와 10303을 할당합니다. 이는 모든 구성요소 유형에 적용됩니다.

보시다시피 실제 포트 수는 토폴로지에 따라 다릅니다. 클러스터에 Postgres 노드가 두 개 있는 경우 포트 4개 (노드 2개에 각각 포트 2개)를 열어야 합니다.

다음에 유의하세요.

  • Consul 프록시는 Apigee 서비스와 동일한 포트에서 리슨할 수 없습니다.
  • Consul에는 포트 주소 공간이 하나만 있습니다. Consul 프록시 포트 할당은 데이터 센터를 포함한 클러스터 전체에서 고유해야 합니다. 즉, 호스트 A의 프록시 A가 포트 15000에서 수신 대기하는 경우 호스트 B의 프록시 B는 포트 15000에서 수신 대기할 수 없습니다.
  • 사용되는 포트 수는 앞에서 설명한 대로 토폴로지에 따라 다릅니다.

다중 데이터 센터 구성에서는 mTLS를 실행하는 모든 호스트도 포트 8302를 열어야 합니다.

Apigee mTLS에서 사용하는 기본 포트를 맞춤설정할 수 있습니다. 이 작업을 수행하는 방법은 프록시 포트 범위 맞춤설정을 참고하세요.

제한사항

Apigee mTLS에는 다음과 같은 제한사항이 있습니다.

  • 노드 간 Cassandra 통신 (포트 7000)을 암호화하지 않음
  • 구성 및 설정은 멱등이 아닙니다. 즉, 한 노드에서 한 가지 변경사항을 적용하면 모든 노드에서 동일한 변경사항을 적용해야 합니다. 시스템에서는 다른 노드에 해당 변경사항을 적용하지 않습니다. 자세한 내용은 기존 apigee-mtls 구성 변경을 참고하세요.

용어

이 섹션에서는 다음 용어를 사용합니다.

용어 정의
cluster 프라이빗 클라우드용 Edge 설치를 구성하는 머신 그룹입니다.
Consul Apigee mTLS에서 사용하는 서비스 메시입니다. Consul이 비공개 클라우드 통신을 보호하는 방법에 대한 자세한 내용은 Consul의 보안 모델을 참고하세요.
mTLS 상호 인증된 TLS입니다.
서비스 메시 오버레이 네트워크 (또는 네트워크 내 네트워크)
TLS 트랜잭션 계층 보안 보안 통신을 위한 업계 표준 인증 프로토콜입니다.