Amazon DynamoDB의 인프라 보안 - Amazon DynamoDB

Amazon DynamoDB의 인프라 보안

관리형 서비스인 Amazon DynamoDB는 AWS Well-Architected Framework의 인프라 보호에 설명된 AWS 글로벌 네트워크 보안 절차로 보호됩니다.

AWS에서 게시한 API 호출을 사용하여 네트워크를 통해 DynamoDB에 액세스합니다. 클라이언트는 TLS(전송 계층 보안) 버전 1.2 또는 1.3을 사용할 수 있습니다. 클라이언트는 DHE(Ephemeral Diffie-Hellman) 또는 ECDHE(Elliptic Curve Diffie-Hellman Ephemeral)와 같은 PFS(전달 완전 보안)가 포함된 암호 제품군도 지원해야 합니다. Java 7 이상의 최신 시스템은 대부분 이러한 모드를 지원합니다. 또한 요청은 액세스 키 ID 및 IAM 주체와 관련된 보안 액세스 키를 사용하여 서명해야 합니다. 또는 AWS Security Token Service(AWS STS)를 사용하여 임시 보안 자격 증명을 생성하여 요청에 서명할 수 있습니다.

DynamoDB에 대한 Virtual Private Cloud(VPC) 엔드포인트를 사용하면 VPC의 Amazon EC2 인스턴스가 퍼블릭 인터넷에 노출되지 않고도 프라이빗 IP 주소를 사용해 DynamoDB에 액세스할 수 있게 할 수 있습니다. 자세한 내용은 Amazon VPC 엔드포인트를 사용하여 DynamoDB에 액세스 단원을 참조하십시오.

Amazon VPC 엔드포인트를 사용하여 DynamoDB에 액세스

보안상의 이유로 많은 AWS 고객은 Amazon Virtual Private Cloud 환경(Amazon VPC)에서 애플리케이션을 실행합니다. Amazon VPC를 통해 Amazon EC2 인스턴스를 퍼블릭 인터넷을 비롯한 다른 네트워크와 논리적으로 분리된 Virtual Private Cloud로 시작할 수 있습니다. Amazon VPC를 사용하면 IP 주소 범위, 서브넷, 라우팅 테이블, 네트워크 게이트웨이 및 보안 설정을 통제할 수 있습니다.

참고

2013년 12월 4일 이후 AWS 계정을 생성했다면 각 AWS 리전에 기본 VPC가 갖추어져 있습니다. 기본 VPC는 바로 사용할 수 있으므로 별도의 구성 단계 없이 즉시 사용할 수 있습니다.

자세한 내용은 Amazon VPC 사용 설명서기본 VPC 및 기본 서브넷을 참조하세요.

퍼블릭 인터넷에 액세스하려면 VPC를 인터넷에 연결하는 가상 라우터인 인터넷 게이트웨이가 VPC에 있어야 합니다. 이를 통해 VPC의 Amazon EC2에서 실행되는 애플리케이션이 Amazon DynamoDB와 같은 인터넷 리소스에 액세스할 수 있습니다.

기본적으로 DynamoDB와의 통신은 SSL/TLS 암호화를 사용하여 네트워크 트래픽을 보호하는 HTTPS 프로토콜을 사용합니다. 다음 다이어그램은 DynamoDB가 VPC 엔드포인트 대신 인터넷 게이트웨이를 사용하도록 하여 DynamoDB에 액세스하는 VPC의 Amazon EC2 인스턴스를 보여줍니다.

라우터, 인터넷 게이트웨이 및 인터넷을 통해 DynamoDB에 액세스하는 Amazon EC2 인스턴스를 보여주는 워크플로 다이어그램.

많은 고객이 퍼블릭 인터넷을 통해 데이터를 주고받는 것에 대한 합법적인 개인 정보 보호 및 보안 문제를 우려합니다. 가상 사설 네트워크(VPN)를 사용하여 모든 DynamoDB 네트워크 트래픽을 자체 기업 네트워크 인프라를 통해 라우팅함으로써 이러한 문제를 해결할 수 있습니다. 그러나 이러한 접근 방식은 대역폭 및 가용성 문제를 일으킬 수 있습니다.

DynamoDB에 대한 VPC 엔드포인트는 이러한 문제를 완화할 수 있습니다. DynamoDB에 대한 VPC 엔드포인트를 사용하면 VPC의 Amazon EC2 인스턴스가 퍼블릭 인터넷에 노출되지 않고도 프라이빗 IP 주소를 사용해 DynamoDB에 액세스할 수 있습니다. EC2 인스턴스에 퍼블릭 IP 주소를 지정할 필요가 없으며 VPC에서 인터넷 게이트웨이, NAT 디바이스 또는 가상 프라이빗 게이트웨이가 필요 없습니다. 엔드포인트 정책을 사용하여 DynamoDB에 대한 액세스를 제어합니다. VPC와 AWS 서비스 간의 트래픽은 Amazon 네트워크를 벗어나지 않습니다.

참고

퍼블릭 IP 주소를 사용하는 경우에도 AWS에 호스팅된 인스턴스와 서비스 간의 모든 VPC 통신은 AWS 네트워크 내에서 프라이빗 상태를 유지합니다. AWS 네트워크에 목적지가 있는 AWS 네트워크에서 시작된 패킷은 AWS 중국 리전으로 오가는 트래픽을 제외하고 AWS 글로벌 네트워크에 남아 있습니다.

DynamoDB에 대한 VPC 엔드포인트를 생성하면 리전 내의 DynamoDB 엔드포인트(예: dynamodb.us-west-2.amazonaws.com)에 대한 모든 요청이 Amazon 네트워크 내의 프라이빗 DynamoDB 종단점으로 라우팅됩니다. VPC의 EC2 인스턴스에서 실행 중인 애플리케이션을 수정할 필요가 없습니다. 엔드포인트 이름은 변함이 없지만 DynamoDB로의 경로는 전적으로 Amazon 네트워크 내에 유지되며 퍼블릭 인터넷에 액세스하지 않습니다.

다음 다이어그램은 VPC의 EC2 인스턴스가 DynamoDB에 액세스하기 위해 VPC 엔드포인트를 사용하는 방법을 보여 줍니다.

라우터와 VPC 종단점을 통해서만 DynamoDB에 액세스하는 EC2 인스턴스를 보여주는 워크플로 다이어그램.

자세한 내용은 자습서: DynamoDB에 대한 VPC 엔드포인트 사용 단원을 참조하십시오.

Amazon VPC 엔드포인트 및 DynamoDB 공유

VPC 서브넷의 게이트웨이 엔드포인트를 통해 DynamoDB 서비스에 액세스할 수 있으려면 해당 VPC 서브넷에 대한 소유자 계정 권한이 있어야 합니다.

VPC 서브넷의 게이트웨이 엔드포인트에 DynamoDB에 대한 액세스 권한이 부여되면 해당 서브넷에 액세스할 수 있는 모든 AWS 계정이 DynamoDB를 사용할 수 있습니다. 즉, VPC 서브넷 내의 모든 계정 사용자는 액세스 권한이 있는 모든 DynamoDB 테이블을 사용할 수 있습니다. 여기에는 VPC 서브넷과는 다른 계정에 연결된 DynamoDB 테이블이 포함됩니다. VPC 서브넷 소유자는 재량에 따라 서브넷 내의 특정 사용자가 게이트웨이 엔드포인트를 통해 DynamoDB 서비스를 사용하는 것을 제한할 수 있습니다.

자습서: DynamoDB에 대한 VPC 엔드포인트 사용

이 단원에서는 DynamoDB에 대해 VPC 엔드포인트를 설정하고 사용하는 절차를 살펴봅니다.

1단계: Amazon EC2 인스턴스 시작

이 단계에서는 기본 Amazon VPC에서 Amazon EC2 인스턴스를 시작합니다. 그런 다음 DynamoDB에 대해 VPC 엔드포인트를 생성하고 사용할 수 있습니다.

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 인스턴스 시작을 선택하고 다음을 수행합니다.

    1단계: Amazon 머신 이미지(AMI) 선택

    • AMI 목록 맨 위에서 [Amazon Linux AMI]로 이동한 후 [Select]를 선택합니다.

    2단계: 인스턴스 유형 선택

    • 인스턴스 유형 목록 맨 위에서 [t2.micro]를 선택합니다.

    • [Next: Configure Instance Details]를 선택합니다.

    3단계: 인스턴스 세부 정보 구성

    • [Network]로 이동한 후 기본 VPC를 선택합니다.

      다음: 스토리지 추가를 선택합니다.

    4단계: 스토리지 추가

    • [Next: Tag Instance]를 선택하여 이 단계를 건너뜁니다.

    5단계: 인스턴스에 태그 지정

    • [Next: Configure Security Group]을 선택하여 이 단계를 건너뜁니다.

    6단계: 보안 그룹 구성

    • 기존 보안 그룹 선택을 선택합니다.

    • 보안 그룹 목록에서 기본값을 선택합니다. 이것이 VPC의 기본 보안 그룹입니다.

    • [Next: Review and Launch]를 선택합니다.

    7단계: 인스턴스 시작 검토

    • 시작을 선택합니다.

  3. [Select an existing key pair or create a new key pair] 창에서 다음 중 하나를 수행합니다.

    • Amazon EC2 키 페어가 없는 경우 Create a new key pair(새 키 페어 생성)를 선택하고 지침을 따릅니다. 프라이빗 키 파일(.pem 파일)을 다운로드하라는 메시지가 표시됩니다. 이 파일은 나중에 Amazon EC2 인스턴스에 로그인할 때 필요합니다.

    • Amazon EC2 키 페어가 이미 있으면 Select a key pair(키 페어 선택)로 이동하고 목록에서 해당 키 페어를 선택합니다. Amazon EC2 인스턴스에 로그인하려면 프라이빗 키 파일(.pem 파일)이 있어야 합니다.

  4. 구성된 키 페어가 있으면 Launch Instances(인스턴스 시작)를 선택합니다.

  5. Amazon EC2 콘솔 홈 페이지로 돌아가서 시작한 인스턴스를 선택합니다. 하단 창의 [Description] 탭에서 인스턴스의 [Public DNS]를 확인합니다. 예: ec2-00-00-00-00.us-east-1.compute.amazonaws.com.

    이 퍼블릭 DNS 이름은 이 자습서의 다음 단계(2단계: Amazon EC2 인스턴스 구성)에서 필요하므로 기록해 둡니다.

참고

Amazon EC2 인스턴스가 사용 가능한 상태가 되는 데 몇 분 정도 걸립니다. 다음 단계로 이동하기 전에 [Instance State]가 running이고 모든 [Status Checks]가 통과되었는지 확인하세요.

2단계: Amazon EC2 인스턴스 구성

Amazon EC2 인스턴스를 사용할 수 있는 경우 해당 인스턴스에 로그인하고 첫 사용이 가능한 상태로 준비할 수 있습니다.

참고

다음 단계에서는 사용자가 Linux를 실행하는 컴퓨터에서 Amazon EC2 인스턴스로 연결되어 있다고 가정합니다. 다른 연결 방법은 Linux 인스턴스용 Amazon EC2 사용 설명서의 Linux 인스턴스에 연결 단원을 참조하세요.

  1. Amazon EC2 인스턴스에 대한 인바운드 SSH 트래픽을 승인해야 합니다. 이를 위해 새로운 EC2 보안 그룹을 생성하여 EC2 인스턴스에 할당합니다.

    1. 탐색 창에서 보안 그룹을 선택합니다.

    2. 보안 그룹 생성을 선택합니다. 보안 그룹 생성 창에서 다음을 수행하세요.

      • Security group name(보안 그룹 이름) - 보안 그룹의 이름을 입력합니다. 예: my-ssh-access

      • Description(설명) - 보안 그룹에 대한 간단한 설명을 입력합니다.

      • VPC - 기본 VPC를 선택합니다.

      • [Security group rules] 단원에서 [Add Rule]을 선택하고 다음을 수행합니다.

        • Type(유형) - SSH를 선택합니다.

        • Source(소스) - 내 IP를 선택합니다.

      원하는 대로 설정되었으면 [Create]를 선택합니다.

    3. 탐색 창에서 Instances(인스턴스)를 선택합니다.

    4. 1단계: Amazon EC2 인스턴스 시작에서 시작한 Amazon EC2 인스턴스를 선택합니다.

    5. Actions(작업) --> 네트워킹 --> 보안 그룹 변경을 차례로 선택합니다.

    6. [보안 그룹 변경]에서 이 절차에서 앞서 생성한 보안 그룹을 선택합니다(예: my-ssh-access). 기존 default 보안 그룹도 선택되어야 합니다. 원하는 대로 설정되었으면 [보안 그룹 할당]을 선택합니다.

  2. ssh 명령을 사용하여 Amazon EC2 인스턴스에 로그인합니다(아래 예 참조).

    ssh -i my-keypair.pem ec2-user@public-dns-name

    프라이빗 키 파일(.pem 파일)과 인스턴스의 퍼블릭 DNS 이름을 지정해야 합니다. (1단계: Amazon EC2 인스턴스 시작 단원을 참조하세요.)

    로그인 ID는 ec2-user입니다. 암호는 필요하지 않습니다.

  3. 다음 예제와 같이 AWS 자격 증명을 구성합니다. 메시지가 나타나면 AWS 액세스 키 ID, 비밀 키 및 기본 리전 이름을 입력합니다.

    aws configure
    AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-1 Default output format [None]:

이제 DynamoDB에 대한 VPC 엔드포인트를 생성할 준비가 되었습니다.

3단계: DynamoDB에 대한 VPC 엔드포인트 생성

이 단계에서는 DynamoDB에 대한 VPC 엔드포인트를 생성하고 이 엔드포인트가 작동하는지 테스트합니다.

  1. 시작하기 전에 퍼블릭 엔드포인트를 사용하여 DynamoDB와 통신할 수 있는지 확인합니다.

    aws dynamodb list-tables

    출력에는 현재 보유하고 있는 DynamoDB 테이블 목록이 표시됩니다. (보유 중인 테이블이 없는 경우 목록이 비어있음).

  2. DynamoDB가 현재 AWS 리전에서 VPC 엔드포인트를 생성하기 위해 사용할 수 있는 서비스인지 확인합니다. (명령은 예제 출력에 이어 굵은 텍스트로 표시됩니다.)

    aws ec2 describe-vpc-endpoint-services
    { "ServiceNames": [ "com.amazonaws.us-east-1.s3", "com.amazonaws.us-east-1.dynamodb" ] }

    예제 출력에서 DynamoDB는 사용할 수 있는 서비스 중 하나이므로 이에 대한 VPC 엔트포인트를 생성할 수 있습니다.

  3. VPC 식별자 확인

    aws ec2 describe-vpcs
    { "Vpcs": [ { "VpcId": "vpc-0bbc736e", "InstanceTenancy": "default", "State": "available", "DhcpOptionsId": "dopt-8454b7e1", "CidrBlock": "172.31.0.0/16", "IsDefault": true } ] }

    예제 출력에서 VPC ID는 vpc-0bbc736e입니다.

  4. VPC 엔드포인트를 생성합니다. --vpc-id 파라미터에 대해 이전 단계에서 VPC ID를 지정합니다. --route-table-ids 파라미터를 사용하여 엔드포인트를 라우팅 테이블과 연결합니다.

    aws ec2 create-vpc-endpoint --vpc-id vpc-0bbc736e --service-name com.amazonaws.us-east-1.dynamodb --route-table-ids rtb-11aa22bb
    { "VpcEndpoint": { "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", "VpcId": "vpc-0bbc736e", "State": "available", "ServiceName": "com.amazonaws.us-east-1.dynamodb", "RouteTableIds": [ "rtb-11aa22bb" ], "VpcEndpointId": "vpce-9b15e2f2", "CreationTimestamp": "2017-07-26T22:00:14Z" } }
  5. VPC 엔드포인트를 통해 DynamoDB에 액세스할 수 있는지 확인합니다.

    aws dynamodb list-tables

    원하는 경우 DynamoDB에 대한 다른 몇 가지 AWS CLI 명령을 시도할 수 있습니다. 자세한 내용은 AWS CLI 명령 참조설명서를 참조하세요.

4단계: (선택 사항) 정리

이 자습서에서 생성한 리소스를 삭제하려면 다음 절차를 따릅니다.

DynamoDB에 대한 VPC 엔드포인트를 제거하려면 다음을 수행합니다.
  1. Amazon EC2 인스턴스에 로그인합니다.

  2. VPC 종단점 ID를 결정합니다.

    aws ec2 describe-vpc-endpoints
    { "VpcEndpoint": { "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", "VpcId": "vpc-0bbc736e", "State": "available", "ServiceName": "com.amazonaws.us-east-1.dynamodb", "RouteTableIds": [], "VpcEndpointId": "vpce-9b15e2f2", "CreationTimestamp": "2017-07-26T22:00:14Z" } }

    예제 출력에서 VPC 엔드포인트 ID는 vpce-9b15e2f2입니다.

  3. VPC 엔드포인트를 삭제합니다.

    aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-9b15e2f2
    { "Unsuccessful": [] }

    빈 어레이 []는 성공을 나타냅니다(실패한 요청 없음).

Amazon EC2 인스턴스를 종료하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 Instances(인스턴스)를 선택합니다.

  3. Amazon EC2 인스턴스를 선택합니다.

  4. Actions(작업), Instance State(인스턴스 상태), Terminate(해지)를 차례로 선택합니다.

  5. 확인 창에서 예, 종료합니다.를 선택합니다.