Docs Menu
Docs Home
/ /
Atlas 아키텍처 센터
/

Atlas 네트워크 보안을 위한 지침

이 페이지의 내용

  • Atlas 네트워크 보안 기능
  • TLS
  • IP 액세스 목록
  • 방화벽 구성
  • 비공개 엔드포인트
  • VPC/VNet 피어링
  • Atlas 네트워크 보안 권장 사항
  • 비공개 엔드포인트
  • IP 액세스 목록
  • VPC/VNet 피어링
  • 자동화 예시: Atlas 네트워크 보안

Atlas 데이터베이스 배포를 위한 다음과 같은 보안 네트워크 구성 기본값을 제공합니다.

  • 필수 TLS/SSL 연결 암호화

  • 하나 이상의 전용 클러스터가 있는 모든 프로젝트에 대한VPC

  • IP 액세스 목록을 사용하고 명시적으로 선언한 소스의 연결만 허용하는 인증

고유한 보안 요구 사항과 기본 설정을 충족하도록 이러한 보호 기능을 추가로 구성할 수 있습니다.

이 페이지의 권장 사항을 사용하여 클러스터의 네트워크 보안 구성을 계획하세요.

Atlas는 데이터베이스로의 모든 연결에 대해 TLS/SSL 암호화를 적용합니다.

하나 이상의 M + 전용 클러스터가 있는 모든 Atlas 프로젝트는1010 Amazon Web Services 또는 Google Cloud Platform 의 전용 VPC 받기 때문에 M + 전용 클러스터를 사용하는 것이 좋습니다. - Azure 의 VNet .

Atlas는 모든 클러스터를 이 VPC 또는 VNet 내에 배포합니다.

기본적으로 클러스터에 대한 모든 액세스는 차단됩니다. 다음 방법 중 하나로 인바운드 연결을 명시적으로 허용해야 합니다.

  • IP 액세스 목록 에 공용 IP 주소를 추가합니다.

  • VPC/VNet 피어링을 사용하여 비공개 IP 주소를 추가합니다.

  • Atlas IP 액세스 목록 에 자동으로 추가하는 비공개 엔드포인트 추가합니다. 다른 액세스 자동으로 추가되지 않습니다.

보안을 강화하기 위해 여러 방법을 함께 사용할 수도 있습니다.

Atlas는 데이터베이스 연결에 필수 TLS 암호화를 적용합니다. TLS 1.2는 기본 프로토콜입니다. 자세한 내용은 추가 설정 구성Set Minimum TLS Protocol Version 섹션을 참조하세요.

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 에 대한 보안 연결을 사용할 수 있습니다. 다음과 같은 비공개 엔드포인트 사용할 수 있습니다.

" MongoDB Atlas 비공개 엔드포인트 작동 방식을 나타내는 이미지입니다."
클릭하여 확대

네트워크 피어링을 사용하면 자체 VPC를 Atlas VPC 와 연결하여 트래픽을 비공개로 라우팅하고 데이터 흐름을 공용 인터넷에서 격리할 수 있습니다. Atlas VPC를 Atlas 프로젝트에 일대일로 매핑합니다.

VPC 연결을 통해 수행되는 대부분의 작업은 애플리케이션 환경에서 시작되므로 Atlas 피어 VPC에 아웃바운드 액세스 요청을 할 필요성을 최소화합니다. 그러나 LDAP 인증 사용하도록 Atlas 구성하는 경우, LDAP 프로토콜 통해 피어 VPC 의 인증 엔드포인트에 아웃바운드 연결하려면 Atlas 활성화 해야 합니다. LDAP 인증. 를 통해 Atlas 에서 더 이상 사용되지 8 0않습니다. 대신 Workforce Identity Federation 및 Workload Identity Federation을 사용하는 것이 좋습니다.

첫 번째 클러스터 배포 전에 VPC 피어링 마법사를 사용하여 Atlas CIDR 차단 선택할 수 있습니다. Atlas VPC CIDR 차단 피어링하려는 VPC 의 CIDR 차단 과 겹치지 않아야 합니다. Atlas CIDR 차단 기반으로 VPC 당 MongoDB 인스턴스 수를 제한합니다. 예시 들어, CIDR 차단 /24 인 프로젝트 27 3에 해당하는 노드 복제본 세트로 제한됩니다.

" MongoDB Atlas VPC/VNet 피어링의 작동 방식을 나타내는 이미지입니다."
클릭하여 확대

네트워크 신뢰 경계 확장을 제한하기 위해 모든 신규 스테이징 및 프로덕션 프로젝트에 비공개 엔드포인트를 설정할 것이 좋습니다.

일반적으로 모든 Atlas 프로젝트에 비공개 엔드포인트를 사용하는 것을 권장합니다. 이는 가장 세분화된 보안을 제공하며 클라우드 네트워크가 확장됨에 따라 IP 액세스 목록 및 대규모 IP 주소 블록 관리에 따르는 관리 부담을 줄여줍니다. 각 엔드포인트에는 비용이 발생하므로 하위 환경에서는 비공개 엔드포인트를 사용할 필요가 없다고 판단할 수 있지만 상위 환경에서는 네트워크 신뢰 경계 확장을 제한하기 위해 이를 활용해야 합니다.

제한 사항 및 고려 사항을 포함하여 Atlas 의 비공개 엔드포인트 에 대해 자세히 학습 Atlas 의 비공개 엔드포인트에 대해 알아보기를 참조하세요. 클러스터의 비공개 엔드포인트 설정하다 하는 방법을 학습 전용 클러스터에 대한 비공개 엔드포인트 설정을 참조하세요.

CI/CD 파이프라인 또는 오케스트레이션 시스템과 같은 신뢰할 수 있는 IP 주소에서만 액세스 허용하도록 API 키 및 프로그래밍 방식 액세스 에 대한 IP 액세스 목록 구성하는 것이 좋습니다. 이러한 IP 액세스 목록은 서비스 계정을 프로비저닝 할 때 Atlas 컨트롤 플레인에서 설정하다 되며 클러스터 연결을 위해 Atlas 프로젝트 데이터 플레인에서 설정하다 수 있는 IP 액세스 목록과는 별개입니다.

IP 액세스 목록 구성할 때는 다음을 수행하는 것이 좋습니다.

  • 팀 구성원이 임시 작업 위치에서 환경에 액세스해야 하거나 프로덕션 중단 상황을 해결하기 위해 사람이 프로덕션에 액세스해야 하는 긴급 상황에서는 임시 액세스 목록 항목을 사용합니다. 이러한 상황에 대비하기 위해 임시 액세스를 빠르게 추가할 수 있는 자동화 스크립트를 작성할 것이 좋습니다.

  • 가능한 가장 작은 네트워크 세그먼트를 포함하는 IP 액세스 목록 항목을 정의합니다. 이렇게 하려면 가능하면 개별 IP 주소를 사용하고 대규모 CIDR 차단을 피합니다.

VPC 또는 VNet 피어링을 구성하는 경우 다음을 수행하는 것이 좋습니다.

  • 네트워크 신뢰 경계를 엄격하게 유지하려면 보안 그룹과 네트워크 ACL을 구성하여 Atlas 측 VPC 에서 애플리케이션 VPC 내부의 시스템에 대한 인바운드 액세스 방지합니다.

  • 민감한 애플리케이션 인프라와 Atlas VPC 사이의중개자 역할을 할 새 VPC를 생성하세요. VPC는 전이적이므로 Atlas 에 액세스 해야 하는 애플리케이션 구성 요소만 노출할 수 있습니다.

GitHub에서 모든 영역에 걸쳐 스테이징/프로덕션 권장 사항을 적용하는 Terraform 예시를 확인하세요.

다음 예제에서는 IP 액세스 목록, VPC 피어링, 비공개 엔드포인트를 사용하여 애플리케이션 환경과 Atlas cluster 간의 연결을 구성합니다.

이러한 예시는 다음을 포함한 다른 권장 구성에도 적용됩니다.

  • 개발/테스트 환경을 위해 클러스터 계층을 M10으로 설정합니다. 애플리케이션 크기에 맞는 권장 클러스터 계층을 알아보려면 클러스터 크기 가이드를 참조하세요.

  • 단일 리전, 3-노드 복제본 세트/샤드 배포 토폴로지

당사의 예시는 AWS, Azure 및 Google Cloud를 상호 교체하여 사용합니다. 세 곳의 클라우드 공급자 중 어느 곳이든 사용할 수 있지만 클라우드 공급자에 맞게 지역 이름을 변경해야 합니다. 클라우드 공급자와 그 지역에 대해 알아보려면 클라우드 공급자를 참조하세요.

  • 중간 규모 애플리케이션을 위해 클러스터 계층을 M30으로 설정합니다. 애플리케이션 크기에 맞는 권장 클러스터 계층을 알아보려면 클러스터 크기 가이드를 참조하세요.

  • 단일 리전, 3-노드 복제본 세트/샤드 배포 토폴로지

당사의 예시는 AWS, Azure 및 Google Cloud를 상호 교체하여 사용합니다. 세 곳의 클라우드 공급자 중 어느 곳이든 사용할 수 있지만 클라우드 공급자에 맞게 지역 이름을 변경해야 합니다. 클라우드 공급자와 그 지역에 대해 알아보려면 클라우드 공급자를 참조하세요.

참고

Atlas CLI로 연결을 구성하기 전에 다음을 수행해야 합니다.

허용하려는 각 연결에 대해 다음 명령을 실행하세요. 항목을 적절한 옵션과 실제 값으로 변경하세요.

atlas accessList create 192.0.2.15 --type ipAddress --projectId 5e2211c17a3e5a48f5497de3 --comment "IP address for app server 2" --output json

이 예시 에 대한 자세한 구성 옵션 및 자세한 내용은 Atlas accessLists 생성을 참조하세요.

AWS, GCPAzure로 IP 액세스 목록 항목을 생성하는 방법에 대한 정보는 전용 클러스터용 프라이빗 엔드포인트 설정을 참조하세요.

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

이 예시 에 대한 자세한 구성 옵션 및 정보는 다음을 참조하세요.

생성하려는 각 비공개 엔드포인트에 대해 다음 명령을 실행합니다. aws 을(를) azure 또는 gcp(으)로 적절히 바꾸고 옵션과 값을 VPC 또는 VNet에 적합한 것으로 변경합니다.

atlas privateEndpoints aws create --region us-east-1 --projectId 5e2211c17a3e5a48f5497de3 --output json

이 예시 에 대한 자세한 구성 옵션 및 정보는 다음을 참조하세요.

참고

Terraform으로 리소스를 생성하기 전에 다음을 수행해야 합니다.

  • 결제 조직을 생성하고 해당 결제 조직에 대한 API 키를 생성합니다. 터미널에서 다음 명령을 실행하여 API 키를 환경 변수로 저장하세요.

    export MONGODB_ATLAS_PUBLIC_KEY="<insert your public key here>"
    export MONGODB_ATLAS_PRIVATE_KEY="<insert your private key here>"
  • Terraform 설치하기

또한 환경에 맞는 작업 공간을 만드는 것이 좋습니다.

IP 액세스 목록 에 항목을 추가하려면 다음 파일 만들어 액세스 부여하려는 프로젝트 의 디렉토리 에 배치합니다. 값을 사용하도록 ID와 이름을 변경합니다.

# 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 와 Atlas VPC 간에 피어링 연결을 생성하려면 다음 파일 생성하여 액세스 부여하려는 프로젝트의 디렉토리에 배치합니다. 값을 사용하도록 ID와 이름을 변경합니다.

# 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와 이름을 변경합니다.

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 키를 눌러 구성을 적용합니다.

돌아가기

보안