비공개 네트워크 접근 구성하기

비공개 네트워크 접근 구성하기

HCP Vault Dedicated의 비공개 네트워킹은 클러스터가 배포된 클라우드 제공자에 따라 AWS 또는 Azure 계정 내 추가 구성이 필요해요. 이 페이지에서는 지원되는 CSP를 사용해 비공개 연결 옵션(피어링, 전송 게이트웨이, 보안 그룹, HCP identity-based proxy)을 구성하는 방법을 설명해 드릴게요.

출처: 문서

본문

HCP Vault Dedicated의 비공개 네트워킹은 클러스터가 배포된 클라우드 제공자에 따라 AWS 또는 Azure 계정 내 추가 구성이 필요해요.

HashiCorp Virtual Networks (HVN)은 AWS 또는 Azure 계정에 비공개로 피어링되거나 허브 네트워크에 스포크(spoke)로 연결될 수 있어요. 이 문서는 지원되는 클라우드 서비스 제공자(CSP)를 사용하는 비공개 연결 옵션을 다뤄요.

각 옵션은 세 가지 주요 단계를 포함해요.

  1. 피어링 연결(AWS 및 Azure) 또는 전송 게이트웨이 어태치먼트 만들기.
  2. HVN과 CSP 사이의 경로(route) 구성.
  3. 보안 그룹 구성.

추가 지침은 AWS용 HVN과 Azure용 HVN 문서를 참고해 주세요.

AWS

피어링 연결 요청 만들기

  1. HCP Portal에 로그인하고 조직을 선택해요.
  2. 사이드바에서 HashiCorp Virtual Network를 클릭해요.
  3. ID 열에서 HVN을 클릭해요.
  4. 사이드바에서 Peering connections을 클릭해요.
  5. Create connection을 클릭해요.
  6. 요청된 필드를 완성해요. Connection ID 필드에 피어링 연결 이름을 입력해요. 이름은 최대 36자이며 문자, 숫자, 대시만 포함할 수 있어요.AWS Account ID를 입력해요.VPC region을 선택해요.VPC ID를 입력해요.
  7. Create connection을 클릭해요.

피어링 연결 요청 완료

  1. HCP Portal에 로그인하고 조직을 선택해요.
  2. 사이드바에서 HashiCorp Virtual Network를 클릭해요.
  3. ID 열에서 HVN을 클릭해요.
  4. 사이드바에서 Peering connections을 클릭해요.
  5. ID 열에서 연결 이름을 클릭해요.
  6. 인바운드 및 아웃바운드 규칙에 대한 명령을 복사해 터미널에서 각각 실행해요.

경로 만들기

  1. HCP Portal에 로그인하고 조직을 선택해요.
  2. 사이드바에서 HashiCorp Virtual Network를 클릭해요.
  3. ID 열에서 HVN을 클릭해요.
  4. 사이드바에서 Route table을 클릭해요. 기본 테이블 항목은 로컬 트래픽을 라우팅해요. 자세한 내용은 Route Table Reference를 참고해 주세요.
  5. Create route를 클릭해요.
  6. 요청된 필드를 완성해요. Route ID 필드에 경로 이름을 입력해요. 경로 ID는 최대 36자이며 문자, 숫자, 대시만 포함할 수 있어요.Destinations 필드에 HVN이 대상 경유지를 통해 도달해야 하는 AWS 리소스의 CIDR 범위를 입력해요. 이 필드 구성에 대한 자세한 내용은 CIDR Block Reference를 참고해 주세요.Targets 필드에서 피어링 연결을 선택해요.
  7. 구성을 완료하려면 Create route를 클릭해요.

보안 그룹 구성

VPC에서 아웃바운드 트래픽을 허용하려면 HCP Vault용 보안 그룹에 다음 규칙을 추가해 주세요.

프로토콜 From Port To Port 대상 용도
TCP 8200 8200 HVN-CIDR Vault API
TCP 5696 5696 HVN-CIDR KMIP server *

참고

KMIP 포트는 KMIP 시크릿 엔진을 사용하는 경우에만 필요하며, 이는 HCP Vault Standard 티어 클러스터에서만 사용할 수 있어요.

보안 그룹에 이 구성을 적용하려면 authorize-security-group-egress 명령을 실행해 주세요. 명령을 실행할 때 대상 VPC 리전과 보안 그룹 ID를 지정해야 해요.

$ aws ec2 --region <TARGET-VPC-REGION> \
   authorize-security-group-egress \
   --<SECURITY-GROUP-ID> \
   --ip-permissions \
   IpProtocol=tcp,FromPort=8200,ToPort=8200,IpRanges='[{CidrIp=172.25.16.0/20}]' \
   IpProtocol=tcp,FromPort=5696,ToPort=5696,IpRanges='[{CidrIp=172.25.16.0/20}]'

전송 게이트웨이 어태치먼트 만들기

  1. HCP Portal에 로그인하고 조직을 선택해요.
  2. 사이드바에서 HashiCorp Virtual Network를 클릭해요.
  3. ID 열에서 HVN을 클릭해요.
  4. Transit gateway attachments를 클릭한 다음 Create attachment를 클릭해요.

전송 게이트웨이 어태치먼트 완료

  1. Web console 탭을 클릭하고 요청된 필드를 완성해요. AttachmentID 필드에 피어링 연결 이름을 입력해요. 이름은 최대 36자이며 문자, 숫자, 대시만 포함할 수 있어요.AWS Account ID를 입력해요.Transit gateway ID를 입력해요.VPC region을 선택해요.Resource share ARN을 입력해요.
  2. Create attachment를 클릭해요.

경로 만들기

  1. HCP Portal에 로그인하고 조직을 선택해요.
  2. 사이드바에서 HashiCorp Virtual Network를 클릭해요.
  3. ID 열에서 HVN을 클릭해요.
  4. 사이드바에서 Route table을 클릭해요. 기본 테이블 항목은 로컬 트래픽을 라우팅해요. 자세한 내용은 Route Table Reference를 참고해 주세요.
  5. Create route를 클릭해요.
  6. 요청된 필드를 완성해요. Route ID 필드에 경로 이름을 입력해요. 경로 ID는 최대 36자이며 문자, 숫자, 대시만 포함할 수 있어요.Destinations 필드에 HVN이 대상 경유지를 통해 도달해야 하는 AWS 리소스의 CIDR 범위를 입력해요. 이 필드 구성에 대한 자세한 내용은 CIDR Block Reference를 참고해 주세요.Targets 필드에서 피어링 연결을 선택해요.
  7. 구성을 완료하려면 Create route를 클릭해요.

보안 그룹 구성

VPC에서 아웃바운드 트래픽을 허용하려면 HCP Vault용 보안 그룹에 다음 규칙을 추가해 주세요.

프로토콜 From Port To Port 대상 용도
TCP 8200 8200 HVN-CIDR Vault API
TCP 5696 5696 HVN-CIDR KMIP server *

참고

KMIP 포트는 KMIP 시크릿 엔진을 사용하는 경우에만 필요하며, 이는 HCP Vault Standard 티어 클러스터에서만 사용할 수 있어요.

보안 그룹에 이 구성을 적용하려면 authorize-security-group-egress 명령을 실행해 주세요. 명령을 실행할 때 대상 VPC 리전과 보안 그룹 ID를 지정해야 해요.

$ aws ec2 --region <TARGET-VPC-REGION> \
   authorize-security-group-egress \
   --<SECURITY-GROUP-ID> \
   --ip-permissions \
   IpProtocol=tcp,FromPort=8200,ToPort=8200,IpRanges='[{CidrIp=172.25.16.0/20}]' \
   IpProtocol=tcp,FromPort=5696,ToPort=5696,IpRanges='[{CidrIp=172.25.16.0/20}]'

팁

고급 네트워크 구성 옵션과 고려 사항은 Azure hub and spoke 문서를 참고해 주세요.

Azure

피어링 연결 요청 만들기

HashiCorp Cloud Platform (HCP)과 Microsoft Azure 사이의 통신을 허용하는 피어링 절차를 시작하려면 HCP Portal에서 피어링 연결을 시작해요.

  1. HCP 웹 콘솔에서 왼쪽 사이드바로 이동해 HashiCorp Virtual Network 탭을 클릭해요.
  2. 피어링 연결을 만들 HVN을 선택해요.
  3. 선택한 HVN 개요 페이지에서 왼쪽 사이드바로 이동해 Peering connections 링크를 클릭해요.
  4. Create connection을 클릭해 Azure 가상 네트워크와 피어링 관계를 만들어요.
  5. 요청된 정보를 입력하고 Create connection 버튼을 클릭해 피어링 절차를 시작해요.

참고

필요한 리소스 ID를 어디서 찾을지 모르겠다면 Where can I find this? 라벨 링크를 클릭해 주세요. 이 링크는 Azure 웹 콘솔에서 해당 정보를 찾을 수 있는 위치에 대한 유용한 정보와 스크린샷을 제공해요.

  1. 연결이 생성되면 Peering connections 페이지는 Azure에서 승인될 때까지 피어링 연결의 Pending 상태를 보여 줘요(아래 예제 스크린샷과 유사).

피어링 연결 요청 완료

  1. 피어링 연결을 클릭하고 Peering Instructions 영역까지 아래로 스크롤한 다음 Azure Cloud Shell 탭을 클릭해요.
  2. Azure 계정에 로그인해요.
$ az login
  1. 서비스 주체(service principal)를 만들어요.
  2. 다음 속성으로 사용자 지정 역할(custom role)을 만들어요. 범위: VNet ID, 권한: Microsoft.Network/virtualNetworks/peer/action, Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read, Microsoft.Network/virtualNetworks/virtualNetworkPeerings/write
  3. 사용자 지정 역할과 서비스 주체 사이에 역할 할당(role assignment)을 만들어요.

배경 정보

구독 컨텍스트에서 Azure 서비스 주체와, 피어링을 수락할 수 있는 제한된 권한을 가진 사용자 지정 Azure 역할을 만들어야 해요. 그런 다음 서비스 주체를 그 사용자 지정 역할에 연결해요. 이 서비스 주체는 Azure에서 HCP로의 피어링을 수립하는 데 사용돼요. 사용자 지정 권한을 가진 서비스 주체를 사용하는 것은 피어링 절차를 완료하는 더 안전하고 보수적인 접근 방식을 제공해요.

  1. 웹 콘솔의 Azure Virtual Network 페이지로 이동해 각자의 Virtual Network를 선택해요.
  2. 왼쪽 사이드바에 있는 Peering 옵션을 클릭해요. 이제 Peering Status 열에 Connected 상태의 항목이 있어야 해요.

참고

피어링 연결이 사용 가능하고 표시되기까지 몇 분이 걸릴 수 있어요.

경로 만들기

  1. HCP Portal에 로그인하고 조직을 선택해요.
  2. 사이드바에서 HashiCorp Virtual Network를 클릭해요.
  3. ID 열에서 HVN을 클릭해요.
  4. 사이드바에서 Route table을 클릭해요. 기본 테이블 항목은 로컬 트래픽을 라우팅해요. 자세한 내용은 Route Table Reference를 참고해 주세요.
  5. Create route를 클릭해요.
  6. 요청된 필드를 완성해요. Route ID 필드에 경로 이름을 입력해요. 경로 ID는 최대 36자이며 문자, 숫자, 대시만 포함할 수 있어요.Destinations 필드에 HVN이 대상 경유지를 통해 도달해야 하는 Azure 리소스의 CIDR 범위를 입력해요. 이 필드 구성에 대한 자세한 내용은 CIDR Block Reference를 참고해 주세요.Targets 필드에서 피어링 연결을 선택해요.
  7. (허브-스포크 토폴로지만) 경로가 허브-스포크 네트워크 토폴로지에서 사용되는 경우 Azure hub-and-spoke options을 활성화해요.
  8. (허브-스포크 토폴로지만) Next Hop Type에서 "Virtual Appliance" 또는 "Virtual Network Gateway"를 선택해요. 해당된다면 Next Hop IP Address에 NVA IP 주소를 입력해요.
  9. 구성을 완료하려면 Create route를 클릭해요.

보안 그룹 구성

  1. HCP Portal에 로그인하고 조직을 선택해요.
  2. 사이드바에서 HashiCorp Virtual Network를 클릭해요.
  3. ID 열에서 HVN을 클릭해요.
  4. 사이드바에서 Peering connections을 클릭해요.
  5. Azure Network security group ID를 입력해요.
  6. HCP에서 생성된 코드를 복사해 Azure에서 실행해요.

VNet에서 아웃바운드 트래픽을 허용하려면 HCP Vault Dedicated용 보안 그룹에 다음 규칙을 추가해 주세요.

우선순위 이름 포트 프로토콜 소스 대상 동작
400 VaultClientOutbound 8200 TCP VirtualNetwork HVN-CIDR Allow

HCP identity-based proxy

HCP proxy identity-based proxy는 공개적으로 접근 가능한 프록시 엔드포인트(HCP가 관리)를 제공하며, 인증되고 승인된 HCP 아이덴티티(사용자와 서비스 주체)만 클러스터로의 네트워크 연결을 허용해요. IP 허용 목록이 불가능할 때 클러스터 UI에 대한 연결을 공개적으로 보호하는 아이덴티티 기반 방법을 제공해요. 이 옵션은 사람 관리자가 클러스터 UI에 쉽게 접근할 때 유용할 수 있어요.

identity-based proxy에 접근하려면 사용자에게 Contributor 또는 Admin 역할이 할당되어 있어야 해요. 권한에 대한 추가 정보는 HCP Vault Dedicated 권한을 검토해 주세요.

클러스터의 프록시 엔드포인트로 UI 접근

proxy가 활성화되면 비공개 네트워크 접근으로 구성된 클러스터는 조직 멤버가 클러스터의 비공개 네트워크로 연결할 필요 없이 포털 내에서 직접 HCP Vault Dedicated 클러스터 UI에 접근할 수 있게 해 줘요. 이는 클러스터 개요 페이지 오른쪽 위의 "Launch web UI" 버튼으로 수행할 수 있어요.

  1. HCP Portal에 로그인해요.
  2. Vault clusters 페이지에서 Launch web UI를 클릭해요.

새 브라우저 또는 새 브라우저 탭이 열려요. HCP Proxy를 통한 인증은 사용자에게 투명하게 처리돼요.

참고

Proxy의 Vault UI URL은 HCP Vault Dedicated 클러스터의 공개 URL과 달라요.

  1. Token 텍스트 상자에 관리자 토큰을 붙여넣거나 로그인할 구성된 인증 방법을 선택해요.

Vault CLI를 클러스터의 proxy에 연결

Vault CLI 1.16 필요

HCP Proxy 주소를 통해 CLI로 HCP Vault Dedicated 클러스터에 연결하려면 CLI가 최소 1.16 버전이어야 해요.

Vault CLI는 HCP Proxy 엔드포인트를 사용해 비공개 HCP Vault Dedicated 클러스터에 연결할 수 있어요.

HCP IAM 사용자로 대화형으로 연결하거나, HCP 서비스 주체로 비대화형으로 연결할 수 있어요.

대화형(HCP IAM 사용자)

  1. vault hcp connect를 실행하고 프롬프트를 따라 연결할 클러스터를 선택해요.

머신이 아직 인증되지 않았다면 이 명령이 브라우저를 열고 HCP 로그인을 요청할 수 있어요. HCP Vault Dedicated 클러스터가 하나뿐이라면 CLI가 자동으로 연결돼요.

$ vault hcp connect
------------------------
Available organizations:
Organization name: HashiCorp
Organization name: Test-Organization
Choose a organization:  Test-Organization
-------------------
Available projects:
Project name: dev-project
Project name: prod-project
Choose a project:  prod-project
-------------------
Available clusters:
Cluster identification: primary-cluster
Cluster identification: replication-secondary-cluster
Choose a cluster: primary-cluster
Connected to cluster via an HCP proxy. Login with 'vault login' or export a VAULT_TOKEN to access this Vault cluster.
  1. 로그인하고 작업할 네임스페이스로 VAULT_NAMESPACE 환경 변수를 설정해요.
$ export VAULT_NAMESPACE=admin
  1. 구성된 인증 방법으로 vault login 명령을 사용해 Vault에 로그인하거나, 표준 Vault CLI 명령을 실행하기 위해 유효한 VAULT_TOKEN을 환경 변수로 설정해요.
$ vault login...
  1. vault hcp disconnect를 실행해 CLI에서 HCP Vault Dedicated 클러스터로의 프록시 연결을 종료해요.
$ vault hcp disconnect

비대화형(HCP 서비스 주체)

  1. Viewer 역할로 HCP 조직에 서비스 주체와 키를 만들어요.
  2. 클라이언트 ID와 클라이언트 시크릿을 복사하거나 환경 변수로 설정해 CLI 명령에 전달해요.
$ export HCP_CLIENT_ID=<actual-client-id> HCP_CLIENT_SECRET=<actual-client-secret>
  1. HCP 포털/URL에서 얻을 수 있는 조직 ID와 프로젝트 ID UUID를 복사하거나 환경 변수로 설정해 CLI 명령에 전달해요.
$ export HCP_ORG_ID=<actual-org-id> HCP_PROJECT_ID=<actual-project-id>
  1. 클러스터 ID(클러스터 이름)를 복사하거나 환경 변수로 설정해 CLI 명령에 전달해요.
$ export HCP_CLUSTER_ID=<actual-cluster-id>
  1. vault hcp connect를 실행하고 HCP Vault 클러스터의 API에 연결할 필수 컨텍스트를 설정해요.
vault hcp connect \
   -client-id $HCP_CLIENT_ID \
   -secret-id $HCP_CLIENT_SECRET \
   -organization-id $HCP_ORG_ID \
   -project-id $HCP_PROJECT_ID \
   -cluster-id $HCP_CLUSTER_ID

예제 출력:

HCP Vault Cluster: vault-cluster

Connected to cluster via an HCP proxy. Login with 'vault login' or export a VAULT_TOKEN to access this Vault cluster.
  1. 로그인하고 작업할 네임스페이스로 VAULT_NAMESPACE 환경 변수를 설정해요.
$ export VAULT_NAMESPACE=admin
  1. 구성된 인증 방법으로 vault login 명령을 사용해 Vault에 로그인하거나, 표준 Vault CLI 명령을 실행하기 위해 유효한 VAULT_TOKEN을 환경 변수로 설정해요.
$ vault login...
  1. vault hcp disconnect를 실행해 CLI에서 HCP Vault Dedicated 클러스터로의 프록시 연결을 종료해요.
$ vault hcp disconnect

AWS 전송 게이트웨이를 전송 네트워크로 사용하기

지원되는 클라우드 제공자를 통해, 전송 네트워크(transit network)라는 개념을 사용해 HCP가 아직 기본적으로 지원하지 않는 제공자의 워크로드를 지원하는 일반적인 하이브리드 클라우드 네트워킹 모델을 활성화할 수 있어요.

AWS Transit Gateway를 통해 Google Cloud Platform (GCP)을 HCP에 연결하기 튜토리얼에서 AWS와 GCP 사이에 VPN을 만들고, HCP와 AWS 사이에 전송 게이트웨이 연결을 만들고, 세 플랫폼 각각 사이의 라우팅을 구성해 이 유형의 연결을 보여 주는 방법을 배워 보세요.

더 알아보기 (Learn more)