프라이빗링크란 무엇인가요?
프라이빗링크는 클라우드 서비스와 가상 네트워크를 비공개로 연결할 수 있는 네트워킹 서비스입니다. 이 연결은 사용자의 데이터를 공용 인터넷에 노출하지 않고 이루어지며, 네트워크 트래픽을 클라우드 제공업체의 네트워크 내에 유지하여 보안을 강화합니다. 프라이빗 링크를 활용하면 클라우드 리소스에 더욱 안전하고 안정적으로 액세스하여 외부 위협의 위험을 최소화하고 클라우드 제공업체의 네트워크 내부에 트래픽을 유지함으로써 대기 시간을 줄일 수 있습니다.
프라이빗링크는 단방향 통신을 촉진하여 트래픽이 한 방향으로만 흐르도록 함으로써 네트워크 연결의 보안을 강화합니다. 이러한 설계는 무단 액세스 및 데이터 유출을 방지하여 클라우드 네트워킹에 PrivateLink를 사용할 때의 보안 이점을 더욱 공고히 합니다.
참고: XDCR 는 현재 비공개 링크와 호환되지 않습니다.
1. AWS 관리 콘솔에 로그인
-
- 로그인 AWS 관리 콘솔
- 다음 페이지로 이동합니다:
- 로그인 AWS 관리 콘솔
2. AWS에서 VPC 생성
-
- 검색창에 다음을 입력합니다. VPC:
- 다음 페이지로 이동합니다:
- 이렇게 하면 VPC 대시보드:
- 검은색 앱 바에서 지역을 선택합니다. 이 예에서는 다음을 사용하고 있습니다: 미국 동부(노스 버지니아) - us-east-1
- 를 클릭합니다. VPC 만들기. 그러면 VPC 설정 페이지가 열립니다.
- 페이지 오른쪽에서 미리 보기를 확인합니다. 만족스럽다면 클릭 VPC 만들기.
- 검색창에 다음을 입력합니다. VPC:
3. AWS EC2 인스턴스 생성
-
- 검색창에 다음을 입력합니다. EC2.
- 에 착륙해야 합니다. EC2 대시보드.
- 다음 사항을 확인하십시오. 그 는 VPC를 생성한 지역과 같은 올바른 지역에 있는지 확인합니다.
- 클릭 인스턴스를 시작합니다.
- 그러면 EC2 설정이 있는 페이지가 열립니다.
- 요약을 확인한 후 인스턴스 시작.
- 몇 초 후 인스턴스가 성공적으로 시작되었다는 것을 확인할 수 있습니다. EC2 인스턴스 ID를 확인합니다. 이 예제에서는 I-0D78DAB1F00D85746. EC2 인스턴스 ID를 클릭합니다.
- 검색창에 다음을 입력합니다. EC2.
4. AWS CLI 도구 설치
-
- AWS CLI 도구를 사용하려면 다음을 따르세요. 문서.
- 임시 자격 증명을 받아야 합니다.
-
- AWS CLI 도구를 구성하려면 옵션 1을 복사하기만 하면 됩니다, 단기 자격 증명 명령을 실행하여 AWS 환경 변수를 설정한 후 터미널에 붙여넣으세요. (아래는 예시입니다. 직접 자격 증명을 붙여넣으세요.)
1 2 3 |
$ 내보내기 AWS_ACCESS_KEY_ID="xxxxxxxxxxxxxxxxx" $ 내보내기 AWS_SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxx" $ 내보내기 aws_session_token="xxxxxxxxxxxxxxxxxxxxxxxxxxxx" |
5. 아카펠라 데이터베이스 만들기
-
- 카펠라에 로그인 회사 이메일과 자격 증명으로 로그인하세요.
- 프로젝트 내에서 다음 구성으로 데이터베이스를 만듭니다:
B. S1단계
이 섹션에서는 방법을 알아봅니다:
|
1. 비공개 엔드포인트 사용
2. 비공개 엔드포인트 추가
3. CLI에서 AWS에 VPC 엔드포인트 만들기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
(base) 니샨트.bhatia@맥북 ~ % aws ec2 create-vpc-엔드포인트 --vpc-id vpc-076A939BA49CE9AB6 --지역 우리-east-1 --서비스-이름 com.아마존.vpce.우리-east-1.vpce-svc-0B4D23FCCABD9EA08 --vpc-엔드포인트-유형 인터페이스 --서브넷-ids 서브넷-08245a74b701954ca { "VpcEndpoint": { "VpcEndpointId": "<strong>vpce-01dfcbabe2bef175e<\/strong>", "VpcEndpointType": "인터페이스", "VpcId": "vpc-076a939ba49ce9ab6", "서비스 이름": "com.amazonaws.vpce.us-east-1.vpce-svc-0b4d23fccabd9ea08", "State": "pendingAcceptance", "RouteTableIds": [], "SubnetIds": [ "subnet-08245a74b701954ca" ], "그룹": [ { "GroupId": "sg-0231c72bc71c7753c", "그룹 이름": "default" } ], "IpAddressType": "ipv4", "DnsOptions": { "DnsRecordIpType": "ipv4" }, "PrivateDnsEnabled": false, "요청자 관리": false, "네트워크인터페이스아이디": [ "eni-0cdc0c23ab3760c13" ], "DnsEntries": [ { "DnsName": "vpce-01dfcbabe1bef165e-vq1r3b0l.vpce-svc-0b5d22fccabd9ea08.us-east-1.vpce.amazonaws.com", "HostedZoneId": "Z7HUB22XULQXV" }, { "DnsName": "vpce-01dfcbabe1aef175e-vq1r3b0l-us-east-1a.vpce-svc-0b5d23fccaad9ea08.us-east-1.vpce.amazonaws.com", "HostedZoneId": "Z7HUB22UULQYV" } ], "생성 타임스탬프": "2024-01-04T16:29:47.138Z", "OwnerId": "306776352488" } } |
4. 연결 완료
C. 2단계
이 섹션에서는 방법을 알아봅니다:
|
1. AWS에서 사설 DNS 사용
2. AWS의 프라이빗 엔드포인트에 대한 인그레스 규칙 편집
-
- 먼저 VPC의 CIDR 블록을 가져와 보겠습니다.
3. AWS의 프라이빗 엔드포인트에 대한 네트워크 ACL 편집
-
- 이제 인바운드 규칙을 추가해 보겠습니다.
D. 애플리케이션으로 비공개 엔드포인트 테스트
이 섹션에서는 방법을 알아봅니다:
|
1. 아카펠라 보안 전제 조건
- Capella에서 비공개 엔드포인트를 복사합니다. 이 예에서는 다음과 같습니다. o3bak2eyqhmw2tq.pl.cloud.couchbase.com
- 아카펠라 설정 를 클릭하고 보안 인증서 페이지를 열어 인증서를 다운로드합니다.
- 다음과 같이 privatelinkdev-root-certificate.txt 파일 또는 데이터베이스 이름에 따라 이와 유사합니다.
2. AWS EC2 인스턴스에 Python 설치
1 |
chmod 400 니샨트N버지니아.pem |
-
-
- 찾기 ssh 예 명령을 터미널에서 실행합니다.
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ ssh -i "니샨트N버지니아.pem" ec2-사용자@ec2-18-212-116-71.compute-1.amazonaws.com 니샨트.bhatia@JGWXHT4VFM 다운로드 % ssh -i "니샨트N버지니아.pem" ec2-사용자@ec2-18-212-126-71.compute-1.amazonaws.com 그리고 진정성 의 호스트 'ec2-18-212-126-71.compute-1.amazonaws.com (18.212.126.71)' can를 설정할 수 없습니다. ED25519 키 지문은 SHA256:RJorms+Tb2vpQxACTE7gcafmFpeP6xQSm3/Ny0WZYJg입니다. 이 키는 다른 이름으로 알려져 있지 않습니다. 계속 연결하시겠습니까(예/아니요/[지문])? 예 경고: 영구적으로 'ec2-18-212-116-71.compute-1.amazonaws.com'(ED25519)를 알려진 호스트 목록에 추가했습니다. , #_ ~\_ ####_ 아마존 리눅스 2023 ~~ \_#####\ ~~ \####| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' |
-
- 이제 인스턴스에 Python SDK를 설치해 보겠습니다. 참고: 다음 설치는 3개의 명령어로 구성되어 있습니다. 터미널에서 각 명령을 개별적으로 실행해야 합니다. 각 명령은 패키지 설치 확인을 대화형으로 묻기도 합니다.
1 2 3 4 5 |
sudo yum 업데이트 sudo yum 설치 gcc gcc-c++ git python3-개발 python3-pip openssl-개발 sudo yum 설치 openssl-개발 sudo yum 설치 openssl python3 -m pip 설치 카우치베이스 |
-
- 라이브러리의 경우 다음 명령을 실행할 수도 있습니다.
1 2 3 |
sudo yum 설치 openssl11 1TP5이 라이브러리가 openssl-devel에 추가되었으므로 실행되지 않아도 괜찮습니다. |
3. Capella 비공개 엔드포인트에 연결하는 Python 앱 테스트하기
-
- ssh를 종료하여 로컬 노트북으로 돌아가거나 새 셸 창을 열 수 있습니다.
1 |
exit |
-
- 이전에 다운로드한 Capella Security .txt 인증서의 이름을 다음과 같이 변경합니다. privatelink-cert.pem. 루트 인증서의 이름을 자신의 이름으로 바꿉니다.
-
-
1mv 다운로드/프라이빗 링크 개발-root-인증서.txt 프라이빗 링크-cert.pem
- 복사해 보겠습니다. privatelink-cert.pem 를 EC2 인스턴스에 추가합니다. 아래 명령어를 입력합니다:
- 인증서 이름을 자신의 이름으로 바꿉니다.
- 키 쌍 파일을 VPC를 만들 때 사용한 파일로 바꿉니다.
- ec2 이름을 자신의 이름으로 바꿉니다(SSH 클라이언트 예제에서 제공된 이름과 동일하게 재사용).
- 명령을 실행합니다.
다음 scp 명령은 단일 명령을 사용합니다.
-
1 2 3 |
cd 다운로드 chmod 400 "니샨트N버지니아.pem" scp -i "니샨트N버지니아.pem" 프라이빗 링크-cert.pem ec2-사용자@ec2-18-212-126-71.compute-1.amazonaws.com:/홈/ec2-사용자 |
-
- 원하는 IDE에서 다음의 간단한 파이썬 코드를 복사합니다.
- 비공개 엔드포인트를 이전에 만든 엔드포인트로 교체합니다.
- 자격 증명을 이전에 만든 Capella 데이터베이스 자격 증명으로 바꿉니다.
- privatelink-cert.pem을 인증서 이름으로 바꿉니다.
- 파일을 다음 이름으로 저장합니다. example.py.
- 원하는 IDE에서 다음의 간단한 파이썬 코드를 복사합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
가져오기 sys 에서 카우치베이스.클러스터 가져오기 클러스터 에서 카우치베이스.옵션 가져오기 클러스터 옵션 에서 카우치베이스.auth 가져오기 비밀번호 인증기 클러스터 = 클러스터('couchbases://o3zak2eyqhmw2tq.pl.cloud.couchbase.com', 클러스터 옵션(비밀번호 인증기("프라이빗링크카펠라","Couchbase123$",인증 경로="/home/ec2-user/privatelink-cert.pem"))) 버킷 = 클러스터.버킷('travel-sample') 컬렉션 = 버킷.범위('인벤토리').컬렉션('항공사') 시도: 결과 = 컬렉션.get('airline_10') 인쇄(결과.content_as[dict]) 예외: 인쇄("예외:", sys.exc_info()[0]) |
-
- 복사 example.py 파일을 ec2 인스턴스에 복사합니다. 이전과 동일하게 인증서를 자신의 인증서로 바꾸고 ec2 이름도 자신의 이름으로 바꿉니다.
1 |
scp -i "니샨트N버지니아.pem" 예제.py ec2-사용자@ec2-18-212-126-71.compute-1.amazonaws.com:/홈/ec2-사용자 |
-
- SSH로 다시 EC2 인스턴스에 로그인합니다.
-
1ssh -i "니샨트N버지니아.pem" ec2-사용자@ec2-18-212-126-71.compute-1.amazonaws.com
- acme-cert.pem 파일과 example.py 파일이 모두 있는지 확인합니다.
1 2 |
[ec2-사용자@IP-10-0-12-174 ~]$ ls 예제.py 프라이빗 링크-cert.pem |
-
- Python 스크립트를 실행합니다. JSON 문서를 가져와야 합니다. airline_10.
1 2 3 |
[ec2-사용자@IP-10-0-12-174 ~]$ python3 예제.py {'id': 10, 'type': '항공사', 'name': '40마일 에어', 'iata': 'Q5', 'icao': 'MLA', 'callsign': 'MILE-AIR', 'country': '미국'} |
4. 카펠라 프라이빗 엔드포인트에 연결하는 컬 명령 테스트하기
-
- 여전히 EC2 인스턴스에서 Server REST API를 사용하여 SQL++ 쿼리를 시도합니다. 비공개 엔드포인트를 사용자 엔드포인트로 바꾸세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[ec2-사용자@IP-10-0-12-173 ~]$ curl -u 개인링크카펠라:Couchbase123$ --데이터-urlencode "statement=select * FROM `travel-sample`.inventory.airline limit 1;" https://o3zak3eyqhmw2tq.pl.cloud.couchbase.com:18093/query/service --insecure { "요청ID": "9c201945-9252-4a14-806a-6ed948faa3e4", "서명": {"*":"*"}, "결과": [ {"항공사":{"id":10,"type":"항공사","name":"40마일 에어","iata":"Q5","icao":"MLA","콜사인":"MILE-AIR","country":"미국"}} ], "status": "성공", "metrics": {"elapsedTime": "7.410508ms","실행 시간": "7.367052ms","resultCount": 1,"결과 크기": 132,"serviceLoad": 6,"usedMemory": 127}, "프로필": {"phaseTimes": {"authorize":"1.134491ms","fetch":"1.662602ms","인스턴스화":"758.586µs","parse":"321.378µs","plan":"147.303µs","primaryScan":"3.249994ms","프로젝트":"2.5µs","run":"6.129593ms","stream":"6.55µs"},"phaseCounts": {"fetch":1,"primaryScan":1},"phaseOperators": {"authorize":1,"fetch":1,"primaryScan":1,"프로젝트":1,"stream":1},"요청 시간": "2024-01-04T17:48:45.956Z","servicingHost": "svc-dqis-node-002.o3zak2eyqhmw2tq.cloud.couchbase.com:8091","실행 타이밍": {"#operator":"Authorize","#stats":{"#phaseSwitches":4,"execTime":"3.122µs","servTime":"1.131369ms"},"권한":{"목록":[{"Target":"default:travel-sample.inventory.airline","Priv":7,"Props":0}]},"~어린이":{"#operator":"시퀀스","#stats":{"#phaseSwitches":1,"execTime":"8.805µs"},"~어린이":[{"#operator":"PrimaryScan3","#stats":{"#itemsOut":1,"#phaseSwitches":7,"execTime":"16.575µs","kernTime":"3.142µs","servTime":"3.233419ms"},"bucket":"travel-sample","index":"def_inventory_airline_primary","index_projection":{"primary_key":true},"키스페이스":"항공사","limit":"1","네임스페이스":"default","범위":"인벤토리","사용":"gsi"},{"#operator":"Fetch","#stats":{"#itemsIn":1,"#itemsOut":1,"#phaseSwitches":10,"execTime":"17.868µs","kernTime":"3.264724ms","servTime":"1.644734ms","usedMemory":127},"bucket":"travel-sample","키스페이스":"항공사","네임스페이스":"default","범위":"인벤토리"},{"#operator":"InitialProject","#stats":{"#itemsIn":1,"#itemsOut":1,"#phaseSwitches":8,"execTime":"132.805µs","kernTime":"4.943451ms","state":"running"},"discard_original":true,"결과_기간":[{"expr":"self","별":true}]},{"#operator":"제한","#stats":{"#itemsIn":1,"#itemsOut":1,"#phaseSwitches":4,"execTime":"2.823µs","kernTime":"1.265µs","usedMemory":127},"expr":"1"},{"#operator":"Stream","#stats":{"#itemsIn":1,"#itemsOut":1,"#phaseSwitches":6,"execTime":"6.55µs","kernTime":"4.956921ms"}}]},"~버전":["7.2.3-N1QL","7.2.3-6705-enterprise"]}}, "컨트롤": {"스캔 일관성": "무제한","use_cbo": "true","n1ql_feat_ctrl": "76","stmtType": "SELECT"} } |
-
- 여전히 EC2 인스턴스에서는 애널리틱스 쿼리 서버 REST API를 사용합니다.
|
이제 프라이빗 링크를 사용하여 AWS VPC와 카우치베이스 카펠라 간에 프라이빗 연결을 설정했습니다!
결론
데이터 통신의 보안과 안정성을 강화하려면 Couchbase Capella용 AWS 프라이빗 링크를 구현하는 것이 중요합니다. VPC와 카우치베이스 카펠라 사이에 프라이빗 연결을 설정하면 공용 인터넷에서 트래픽을 효과적으로 격리하여 잠재적인 위협에 노출될 위험을 줄일 수 있습니다. 이 접근 방식은 데이터가 보안 네트워크 경계 내에 유지되도록 보장하며, AWS의 강력한 인프라를 활용하여 짧은 지연 시간과 높은 처리량을 유지합니다. AWS 프라이빗 링크는 단방향 통신만 제공하므로 데이터가 리소스에서 Couchbase Capella로 역방향 경로 없이 안전하게 흐르도록 보장합니다. 따라서 AWS 프라이빗 링크는 엔터프라이즈급 데이터베이스 연결을 위한 매우 안전하고 효율적인 솔루션입니다.