Atlas 네트워크 보안을 위한 지침
이 페이지의 내용
Atlas 데이터베이스 배포를 위한 다음과 같은 보안 네트워크 구성 기본값을 제공합니다.
필수 TLS/SSL 연결 암호화
하나 이상의 전용 클러스터가 있는 모든 프로젝트에 대한VPC
IP 액세스 목록을 사용하고 명시적으로 선언한 소스의 연결만 허용하는 인증
고유한 보안 요구 사항과 기본 설정을 충족하도록 이러한 보호 기능을 추가로 구성할 수 있습니다.
이 페이지의 권장 사항을 사용하여 클러스터의 네트워크 보안 구성을 계획하세요.
Atlas 네트워크 보안 기능
Atlas 데이터베이스에 대한 모든 연결에 TLS/SSL 암호화 시행합니다.
M10+ 전용 클러스터가 하나 이상 포함된 모든 Atlas 프로젝트는 다음거ㅣ 같은 전용 리소스를 수신하므로 M10+ 전용 클러스터를 사용하는 것이 좋습니다. - AWS 또는 Google Cloud의 전용 VPC - Azure의 VNet.
Atlas는 모든 클러스터를 이 VPC 또는 VNet 내에 배포합니다.
기본값으로 모든 클러스터에 대한 액세스가 차단됩니다. 다음 방법 중 하나를 사용하여 인바운드 연결을 명시적으로 허용해야 합니다.
IP 액세스 목록 에 공용 IP 주소를 추가합니다.
VPC/VNet 피어링을 사용하여 비공개 IP 주소를 추가합니다.
Atlas IP 액세스 목록 에 자동으로 추가하는 비공개 엔드포인트 추가합니다. 다른 액세스 자동으로 추가되지 않습니다.
보안을 강화하기 위해 여러 방법을 함께 사용할 수도 있습니다.
TLS
Atlas 데이터베이스에 대한 연결에 TLS 암호화 강제로 적용합니다. TLS 1.2 이 기본값 프로토콜 입니다. 자세한 학습 은 추가 설정 구성의 Set Minimum TLS Protocol Version 섹션을 참조하세요.
IP 액세스 목록
Atlas 관리자로서 다음 작업을 수행할 수 있습니다.
IP 액세스 목록을 구성하여 데이터베이스에 대한 인증을 시도할 수 있는 IP 주소를 제한할 수 있습니다.
Atlas 클러스터는 IP 액세스 목록에 추가한 IP 주소 및 CIDR 차단 IP 범위에서만 액세스 허용합니다. 애플리케이션 서버 및 기타 클라이언트의 IP 주소가 IP 액세스 목록 에 포함되어 있지 않은 경우, 애플리케이션 서버 및 기타 클라이언트는 Atlas cluster에 액세스 할 수 없습니다.
사용자가 정의한 기간이 지나면 자동으로 만료되는 임시 액세스 목록 항목 을 구성할 수 있습니다.
방화벽 구성
클라이언트 애플리케이션 서버에서 Atlas 로 연결하고 아웃바운드 네트워크 연결을 차단하는 방화벽 통과할 때는 애플리케이션이 Atlas 호스트의 TCP 트래픽에 아웃바운드 연결을 할 수 있도록 방화벽 도 구성해야 합니다. 이렇게 하면 애플리케이션에 클러스터에 대한 액세스 부여됩니다.
Atlas 클러스터의 공개 IP는 클러스터 변경의 과반수의 경우, 예를 들어 수직 확장, 토폴로지 변경 또는 유지 관리 이벤트와 같은 경우 동일하게 유지됩니다. 그러나 복제본 세트에서 샤딩된 클러스터로의 변환, 샤드 추가, 또는 리전 변경 과 같은 특정 토폴로지 변경은 새로운 IP 주소를 사용해야 합니다.
복제본 세트 에서 샤딩된 클러스터 로 변환하는 경우 애플리케이션 클라이언트를 다시 연결하지 못하면 애플리케이션 데이터 중단이 발생할 수 있습니다. DNS 시드 목록 연결 문자열 mongos
사용하는 경우 애플리케이션 샤딩된 클러스터 의 에 자동으로 연결됩니다. 표준 연결 문자열 사용하는 경우 새 클러스터 토폴로지 를 반영하도록 연결 문자열 업데이트 해야 합니다.
새 샤드를 추가하는 경우 애플리케이션 클라이언트를 다시 연결하지 못하면 애플리케이션 데이터 중단이 발생할 수 있습니다.
비공개 엔드포인트
비공개 엔드포인트는 Atlas 상호 연결을 시작하는 것을 허용하지 않고 자체 VPC 에서 Atlas VPC 로의 단방향 연결을 용이하게 합니다. 이를 통해 네트워크 신뢰 경계를 확장하지 않고도 Atlas 에 대한 보안 연결을 사용할 수 있습니다. 다음과 같은 비공개 엔드포인트 사용할 수 있습니다.
AWS 프라이빗 링크, AWS VPC에서의 연결
Microsoft Azure Private Link, Microsoft Azure VNet에서의 연결용
비공개 서비스 연결, Google Cloud Platform VPC의 연결용
VPC/VNet 피어링
네트워크 피어링을 통해 자체 VPC를 Atlas VPC와 연결하여 트래픽을 비공개로 라우팅하고 데이터 흐름을 공용 인터넷에서 격리할 수 있습니다. Atlas는 VPC를 일대일로 Atlas 프로젝트에 매핑합니다.
VPC 연결을 통해 수행되는 대부분의 작업은 애플리케이션 환경에서 시작되므로 Atlas가 피어 VPC에 대한 아웃바운드 요청을 최소화합니다. 그러나 Atlas를 LDAP 인증을 사용하도록 구성하는 경우, Atlas가 LDAP 프로토콜을 통해 피어 VPC의 인증 엔드포인트로 아웃바운드 연결할 수 있도록 활성화해야 합니다. Atlas에서 8.0을(를) 사용하는 경우 LDAP 인증은 더 이상 지원되지 않습니다. 대신 Workforce Identity Federation 및 Workload Identity Federation을 사용하는 것이 좋습니다.
첫 번째 클러스터 배포 전에 VPC 피어링 마법사를 사용하여 Atlas CIDR 차단 선택할 수 있습니다. Atlas VPC CIDR 차단 피어링하려는 VPC 의 CIDR 차단 과 겹치지 않아야 합니다. Atlas CIDR 차단 기반으로 VPC 당 MongoDB 인스턴스 수를 제한합니다. 예시 들어 CIDR 차단 있는 프로젝트 /24
27 3에 해당하는 노드 복제본 세트로 제한됩니다.
Atlas 네트워크 보안 권장 사항
비공개 엔드포인트
모든 새로운 스테이징 및 프로덕션 비공개 엔드포인트를 설정하여 네트워크 신뢰 경계의 확장을 제한하는 것이 좋습니다.
일반적으로 모든 Atlas 프로젝트에 비공개 엔드포인트를 사용하는 것을 권장합니다. 이는 가장 세분화된 보안을 제공하며, 클라우드 네트워크가 확장됨에 따라 IP 액세스 목록 및 대규모 IP 주소 블록을 관리하는 데 따르는 관리 부담을 줄여줍니다. 각 엔드포인트에는 비용이 발생하므로 낮은 환경에서는 비공개 엔드포인트를 요구하지 않는 것이 좋지만, 높은 환경에서는 네트워크 신뢰 경계의 확장을 제한하기 위해 이를 활용해야 합니다.
제한 사항 및 고려 사항을 포함하여 Atlas 의 비공개 엔드포인트 에 대해 자세히 학습 Atlas 의 비공개 엔드포인트에 대해 알아보기를 참조하세요. 클러스터의 비공개 엔드포인트 설정하다 하는 방법을 학습 전용 클러스터에 대한 비공개 엔드포인트 설정을 참조하세요.
IP 액세스 목록
CI/CD 파이프라인 또는 오케스트레이션 시스템과 같은 신뢰할 수 있는 IP 주소에서만 액세스 허용하도록 API 키 및 프로그래밍 방식 액세스 에 대한 IP 액세스 목록 구성하는 것이 좋습니다. 이러한 IP 액세스 목록은 서비스 계정을 프로비저닝 할 때 Atlas 컨트롤 플레인에서 설정하다 되며 클러스터 연결을 위해 Atlas 프로젝트 데이터 플레인에서 설정하다 수 있는 IP 액세스 목록과는 별개입니다.
IP 액세스 목록 구성할 때는 다음을 수행하는 것이 좋습니다.
팀 구성원이 임시 작업 위치에서 환경에 액세스해야 하거나, 프로덕션 중단 시나리오에서 문제 해결을 위해 사람의 프로덕션 액세스가 필요한 경우 임시 액세스 목록 항목을 사용하십시오. 이러한 사고에 대비하여 임시 액세스를 신속하게 추가할 수 있는 자동화 스크립트를 만드는 것을 권장합니다.
가능한 가장 작은 네트워크 세그먼트를 포함하도록 IP 액세스 목록 항목을 정의합니다. 이 작업을 수행하려면 가능한 경우 개별 IP 주소를 사용하고 대규모 CIDR 블록을 피합니다.
VPC/VNet 피어링
VPC 또는 VNet 피어링을 구성하는 경우 다음을 권장합니다.
엄격한 네트워크 신뢰 경계를 유지하려면 보안 그룹과 네트워크 ACL을 구성하여 Atlas 측 VPC에서 애플리케이션 VPC 내부 시스템으로의 인바운드 액세스를 방지합니다.
민감한 애플리케이션 인프라와 Atlas VPC 사이에서 중개자 역할을 하는 새로운 VPC를 생성합니다. VPC는 비전이적이므로 Atlas에 액세스가 필요한 애플리케이션 구성 요소만 노출할 수 있습니다.
자동화 예시: Atlas 네트워크 보안
다음 예제에서는 IP 액세스 목록, VPC 피어링, 비공개 엔드포인트를 사용하여 애플리케이션 환경과 Atlas cluster 간의 연결을 구성합니다.
이러한 예시는 다음을 포함한 다른 권장 구성에도 적용됩니다.
개발/테스트 환경을 위해 클러스터 계층을
M10
으로 설정합니다. 애플리케이션 크기에 맞는 권장 클러스터 계층을 알아보려면 클러스터 크기 가이드를 참조하세요.단일 리전, 3-노드 복제본 세트/샤드 배포 토폴로지
이 예제에서는 Amazon Web Services, Azure 및 Google Cloud Platform 서로 바꿔서 사용합니다. 이 세 가지 cloud 제공자 중 하나를 사용할 수 있지만 cloud 제공자 와 일치하도록 리전 이름을 변경해야 합니다. cloud 제공자 및 해당 리전에 대해 학습 클라우드 제공자를 참조하세요.
중간 규모 애플리케이션을 위해 클러스터 계층을
M30
으로 설정합니다. 애플리케이션 크기에 맞는 권장 클러스터 계층을 알아보려면 클러스터 크기 가이드를 참조하세요.단일 리전, 3-노드 복제본 세트/샤드 배포 토폴로지
이 예제에서는 Amazon Web Services, Azure 및 Google Cloud Platform 서로 바꿔서 사용합니다. 이 세 가지 cloud 제공자 중 하나를 사용할 수 있지만 cloud 제공자 와 일치하도록 리전 이름을 변경해야 합니다. cloud 제공자 및 해당 리전에 대해 학습 클라우드 제공자를 참조하세요.
참고
Atlas CLI로 연결을 구성하기 전에 다음을 수행해야 합니다.
의단계에 따라 Atlas CLIProgrammatic Use 에서 연결합니다.
IP 액세스 목록 항목 만들기
각 연결에 대해 다음 명령을 실행하십시오. 항목을 적절한 옵션과 실제 값으로 변경하세요.
atlas accessList create 192.0.2.15 --type ipAddress --projectId 5e2211c17a3e5a48f5497de3 --comment "IP address for app server 2" --output json
이 예시 에 대한 자세한 구성 옵션 및 자세한 내용은 Atlas accessLists 생성을 참조하세요.
Amazon Web Services, GCP 및 Azure 사용하여 IP 액세스 목록 항목을 생성하는 방법에 대한 자세한 내용은 전용 클러스터에 대한 비공개 엔드포인트 설정을 참조하세요.
VPC 피어링 연결을 만듭니다.
Atlas VPC 에 피어링하려는 각 VPC 에 대해 다음 명령을 실행합니다. aws
를 azure
또는 gcp
로 적절히 바꾸고 옵션과 값을 VPC 또는 VNet에 적합한 것으로 변경합니다.
atlas networking peering create aws --accountId 854333054055 --atlasCidrBlock 192.168.0.0/24 --region us-east-1 --routeTableCidrBlock 10.0.0.0/24 --vpcId vpc-078ac381aa90e1e63
이 예시 에 대한 자세한 구성 옵션 및 정보는 다음을 참조하세요.
Atlas 네트워킹 피어링은 Amazon Web Services Services VPC용 Amazon Web Services Services를 생성합니다.
Atlas 네트워킹 피어링은 Microsoft Azure VNet용 Azure 생성합니다.
Google Cloud VPC를 위한 Atlas 네트워킹 피어링 생성 gcp
비공개 엔드포인트 만들기
생성하려는 각 비공개 엔드포인트에 대해 다음 명령을 실행합니다. aws
을(를) azure
또는 gcp
(으)로 적절히 바꾸고 옵션과 값을 VPC 또는 VNet에 적합한 것으로 변경합니다.
atlas privateEndpoints aws create --region us-east-1 --projectId 5e2211c17a3e5a48f5497de3 --output json
이 예시 에 대한 자세한 구성 옵션 및 정보는 다음을 참조하세요.
Atlas privateEndpoints Amazon Web Services create, Amazon Web Services VPC의 연결에 대해
atlas privateEndpoints azure create, Microsoft Azure VNet에서의 연결을 위해
GCP 비공개 서비스 연결에서의 연결을 위한 atlas privateEndpoints gcp create
참고
IP 액세스 목록 항목 만들기
IP 액세스 목록 에 항목을 추가하려면 다음 파일 만들어 액세스 부여하려는 프로젝트 의 디렉토리 에 배치합니다. 값을 사용하도록 ID와 이름을 변경합니다.
accessEntryForAddress1.tf
# Add an entry to your IP Access List resource "mongodbatlas_access_list_api_key" "address_1" { org_id = "<org-id>" ip_address = "2.3.4.5" api_key_id = "a29120e123cd" }
파일을 생성한 후 프로젝트 디렉토리로 이동하여 다음 명령을 실행하여 Terraform을 초기화합니다:
terraform init
Terraform 계획을 보려면 다음 명령을 실행합니다.
terraform plan
다음 명령을 실행하여 프로젝트 의 IP 액세스 목록 에 항목을 하나 추가합니다. 이 명령은 파일 과 MongoDB & HashiCorp Terraform 을 사용하여 항목을 추가합니다.
terraform apply
메시지가 표시되면 yes
를 입력하고 Enter
키를 눌러 구성을 적용합니다.
VPC 피어링 연결을 만듭니다.
애플리케이션 VPC 와 Atlas VPC 간에 피어링 연결을 생성하려면 다음 파일 생성하여 액세스 부여하려는 프로젝트의 디렉토리에 배치합니다. 값을 사용하도록 ID와 이름을 변경합니다.
vpcConnection.tf
# Define your application VPC resource "aws_default_vpc" "default" { tags = { Name = "Default VPC" } } # Create the peering connection request resource "mongodbatlas_network_peering" "mongo_peer" { accepter_region_name = "us-east-2" project_id = local.project_id container_id = one(values(mongodbatlas_advanced_cluster.test.container_id)) provider_name = "AWS" route_table_cidr_block = "172.31.0.0/16" vpc_id = aws_default_vpc.default.id aws_account_id = local.AWS_ACCOUNT_ID } # Accept the connection resource "aws_vpc_peering_connection_accepter" "aws_peer" { vpc_peering_connection_id = mongodbatlas_network_peering.mongo_peer.connection_id auto_accept = true tags = { Side = "Accepter" } }
파일 생성한 후 프로젝트 디렉토리 로 이동하여 다음 명령을 실행 Terraform을 초기화합니다.
terraform init
Terraform 계획을 보려면 다음 명령을 실행합니다.
terraform plan
다음 명령을 실행하여 애플리케이션에서 프로젝트로 VPC 피어링 연결을 추가합니다. 이 명령은 파일과 MongoDB & HashiCorp Terraform 을 사용하여 항목을 추가합니다.
terraform apply
메시지가 표시되면 yes
를 입력하고 Enter
키를 눌러 구성을 적용합니다.
비공개 링크 만들기
애플리케이션 VPC 에서 Atlas VPC로 PrivateLink를 생성하려면 다음 파일 생성하여 연결하려는 프로젝트의 디렉토리에 배치합니다. 값을 사용하도록 ID와 이름을 변경합니다.
privateLink.tf
resource "mongodbatlas_privatelink_endpoint" "test" { project_id = "<project-id>" provider_name = "AWS/AZURE" region = "US_EAST_1" timeouts { create = "30m" delete = "20m" } }
파일 생성한 후 프로젝트 디렉토리 로 이동하여 다음 명령을 실행 Terraform을 초기화합니다.
terraform init
Terraform 계획을 보려면 다음 명령을 실행합니다.
terraform plan
다음 명령을 실행하여 애플리케이션에서 프로젝트로 PrivateLink 엔드포인트를 추가합니다. 명령은 파일과 MongoDB & HashiCorp Terraform 을 사용하여 항목을 추가합니다.
terraform apply
메시지가 표시되면 yes
를 입력하고 Enter
키를 눌러 구성을 적용합니다.