PrivateLink
프라이빗 네트워크 연결을 통해 서비스와 VPC 리소스간에 보안된 연결을 제공
AWS - PrivateLink, Azure - Private Link 서비스와 유사
장점
- 보안성 강화 - 인터넷을 거치지 않고 VPC와 연결되어, 외부 공격으로부터 데이터 보호
- 우수한 네트워크 품질 - 인터넷 지연 시간에 영향을 받지 않아 네트워크 품질이 향상
- 경로 간소화 - VPC와 외부 서비스 연결을 위한 복잡한 네트워크 경로 설정을 단순화 할 수 있음
단점
- 비용 증가 - VPC 엔드포인트 생성 및 트래픽 전송에 추가 비용 발생
- 리전 제한 - PrivateLink 서비스를 제공하는 리전이 제한적
- 서비스 제한 - 특정 서비스(OSS, SLB등)에만 연결 가능
ESC, OSS, PrivateLink 를 구성하여 파일 다운로드 테스트 및 Network ACL을 통한 접근 제어 테스트
- vSwitch-01 (172.16.80.0/24) - vm 구성
- vSwitch-02 (172.16.90.0/24) - privatelink 구성
ECS 생성
vSwitch-01 (172.16.80.0/24) 에 ECS 생성
OSS 생성
RAM 계정 생성
oss 접근을 위한 권한 할당 (테스트를 위해 OSS full 권한 부여)
AccessKey 생성
- Applicatioin running on ECS 선택 후 진
- AccessKey ID와 AccessKEy Secret 값은 복사하여 보
- 생성 완료
PrivateLink 생성
알리바바 클라우드 포탈 접속 후 상단 검색창에서 "privatelink" 검색 후 접속 (Endpoints 로 연결 됨)
"Create Endpoint" 클릭
- Endpoint Type - Interface Endpoint 선택
- Zone and vSwitch - vSwitch-02 (172.16.90.0/24) 선택
생성 완료
파일 다운로드 테스트
파일 다운로드 파이썬 코드 (oss_download.py)
# -*- coding: utf-8 -*-
import oss2
# 액세스 키 ID와 비밀 키를 명시적으로 전달
access_key_id = 'LT**************'
access_key_secret = 'SX**************'
# Auth 객체 생성
auth = oss2.Auth(access_key_id, access_key_secret)
# 엔드포인트와 버킷 이름을 사용하여 버킷 객체 생성
bucket = oss2.Bucket(auth, '엔드포인트명.oss.ap-northeast-1.privatelink.aliyuncs.com', 'oss버킷명', is_path_style=True)
# 파일 다운로드
bucket.get_object_to_file('oss.txt', './oss.txt')
다운로드 테스트
root@ali-cloud-vm:~# ls -al | grep oss
-rw-r--r-- 1 root root 549 Jun 13 12:01 oss_download.py
root@ali-cloud-vm:~# python3 oss_download.py
root@ali-cloud-vm:~# ls -al | grep oss
-rw-r--r-- 1 root root 549 Jun 13 12:01 oss_download.py
-rw-r--r-- 1 root root 8 Jun 13 12:10 oss.txt
root@ali-cloud-vm:~# cat oss.txt
oss test
Network ACL 설정을 통한 접근 제어
알리바바 클라우드 포탈 접속 후 상단 검색창에서 "vpc" 검색 후 접속 -> 왼쪽 하단 Network ACL 클릭
"Create Network ACL" 클릭
- VPC 선택
- Name 지정
생성 완료
Network ACL 설정
- ACL 적용할 스위치 선택 - privatelink 가 구성되어 있는 2번 스위치 선택 (172.16.90.0/24)
Outbound 정책 설정
- 1번 vm(172.16.80.250) - 접근 허용
- 2번 vm(172.16.80.252) - 접근 차단
다운로드 테스트
- 1번 vm(172.16.80.250) - 접근 허용
root@ali-cloud-vm:~# ls -al | grep oss
-rw-r--r-- 1 root root 549 Jun 13 12:01 oss_download.py
root@ali-cloud-vm:~# python3 oss_download.py
root@ali-cloud-vm:~# ls -al | grep oss
-rw-r--r-- 1 root root 549 Jun 13 12:01 oss_download.py
-rw-r--r-- 1 root root 8 Jun 13 12:59 oss.txt
- 2번 vm(172.16.80.252) - 접근 차단
root@ali-cloud-vm1:~# python3 oss_download.py
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 203, in _new_conn
sock = connection.create_connection(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 85, in create_connection
raise err
File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 73, in create_connection
sock.connect(sa)
TimeoutError: timed out
- 2번 vm(172.16.80.252) - Nework ACL 해제 후
root@ali-cloud-vm1:~# ls -al | grep oss
-rw-r--r-- 1 root root 549 Jun 13 12:51 oss_download.py
root@ali-cloud-vm1:~# python3 oss_download.py
root@ali-cloud-vm1:~# ls -al | grep oss
-rw-r--r-- 1 root root 549 Jun 13 12:51 oss_download.py
-rw-r--r-- 1 root root 8 Jun 13 13:03 oss.txt