MongoDB Atlas 시크릿 엔진

MongoDB Atlas 시크릿 엔진

MongoDB Atlas 시크릿 엔진은 Programmatic API 키를 생성해요. 생성된 MongoDB Atlas 시크릿은 시간 기반이며, 갱신되지 않는 한 Vault 리스가 만료되면 자동으로 폐기돼요.

Vault는 각 리스에 대해 정의된 MongoDB Atlas 프로젝트나 조직에 적절한 역할과 함께 적절한 접근을 제공하는 Programmatic API 키를 만들어요. MongoDB Atlas Programmatic API Key의 공개 키와 비공개 키가 호출자에게 반환돼요. Programmatic API Key에 대해 자세히 알아보려면 Programmatic API Keys 문서를 방문하세요.

참고: 아래 정보는 MongoDB Atlas 시크릿 엔진에 관한 것이에요. Vault 데이터베이스 시크릿 엔진용 MongoDB Atlas 데이터베이스 플러그인 사용에 대한 정보는 MongoDB Atlas 데이터베이스 시크릿 엔진을 참고하세요.

출처: 문서

본문

설정(Setup)

대부분의 시크릿 엔진은 기능을 수행하기 전에 미리 구성해야 해요. 이 단계는 보통 운영자나 구성 관리 도구가 완료해요.

MongoDB Atlas 시크릿 엔진을 활성화해요:

$ vault secrets enable mongodbatlas
Success! Enabled the mongodbatlas secrets engine at: mongodbatlas/

기본적으로 시크릿 엔진은 엔진 이름으로 마운트돼요. 다른 경로에 시크릿 엔진을 활성화하려면 -path 인수를 사용하세요.

Vault가 다른 Programmatic API 키를 만들 수 있게 충분한 권한이 있는 조직 또는 프로젝트용 MongoDB Atlas Programmatic API 키를 생성하고 구성하는 것이 필요해요. API만 사용해 조직 또는 프로젝트에 Vault 프로그램적 접근을 부여하려면 아직 없다면 적절한 역할로 MongoDB Atlas Programmatic API 키를 만들어야 해요. Programmatic API 키는 공개 키와 비공개 키로 구성되므로 둘 다 있는지 확인하세요. 역할과 관련해 대부분의 필요에 Oxford Organization Owner 및 Project Owner 역할이면 충분하지만, 각 역할이 부여하는 것을 MongoDB Atlas Programmatic API Key User Roles 문서에서 확인하세요. 키를 만들 때 IP Network Access 목록을 설정하는 것을 권장해요.

Atlas UI에서 Programmatic API 키를 만드는 방법(사용 가능한 역할 포함)에 대한 자세한 지침은 Programmatic API Key 문서를 방문하세요.

이전 단계에서 만든 MongoDB Atlas Programmatic Key 쌍이 있으면 이제 Vault를 MongoDB Atlas와 함께 사용하도록 구성할 수 있어요.

$ vault write mongodbatlas/config \
    public_key=yhltsvan \
    private_key=2c130c23-e6b6-4da8-a93f-a8bf33218830

내부적으로 Vault는 이 자격 증명으로 MongoDB Atlas에 연결해요. 따라서 이 자격 증명은 API 키에 부여될 수 있는 어떤 정책의 상위 집합(superset)이어야 해요. MongoDB Atlas 루트 계정 자격 증명을 사용하지 않는 것을 적극 권장해요. 대신 적절한 역할이 있는 전용 Programmatic API 키를 생성하세요.

Programmatic API 키(Programmatic API keys)

Programmatic API Key 자격 증명 유형은 Vault 역할을 사용해 MongoDB Atlas 조직 또는 프로젝트 수준에서 지정된 역할로 프로그램적 접근을 위한 Programmatic API Key를 생성해요. Programmatic API Key는:

  • 공개 키와 비공개 키 두 부분으로 되어 있어요.
  • 사용자 인터페이스를 통해 Atlas에 로그인하는 데 사용할 수 없어요.
  • 필요한 작업을 완료하려면 적절한 역할이 부여되어야 해요.
  • 하나의 조직에 속해야 하지만, 그 조직의 어떤 수의 프로젝트에도 접근이 부여될 수 있어요.
  • IP Network Access 목록이 구성될 수 있으며 일부 기능은 Network Access 목록 구성이 필요할 수 있어요(이것은 MongoDB Atlas API 문서에 명시돼 있어요).

지정된 조직 또는 프로젝트에 적절한 인수를 매핑해 MongoDB Atlas Programmatic API Key용 Vault 역할을 만들어요:

  • 조직 API 키(Organization API Key): 적절한 Organization Level Roles와 함께 organization_id 인수를 설정해요.
  • 프로젝트 API 키(Project API Key): 적절한 Project Level Roles와 함께 project_id를 설정해요.

Programmatic API 키는 하나의 조직에만 속할 수 있지만 하나 이상의 프로젝트에 속할 수 있어요.

예시:

$ vault write mongodbatlas/roles/test \
    organization_id=5b23ff2f96e82130d0aaec13 \
    roles=ORG_MEMBER
$ vault write mongodbatlas/roles/test \
    project_id=5cf5a45a9ccf6400e60981b6 \
    roles=GROUP_DATA_ACCESS_READ_ONLY

Programmatic API 키 네트워크 접근 목록(Programmatic API key network access list)

참고: MongoDB Atlas는 화이트리스트(whitelist)를 더 이상 사용하지 않으며 API는 2021년 6월에 비활성화될 예정이에요. 그것은 지금 라이브 중인 유사한 접근 목록 API로 대체돼요. 허용할 CIDR 블록이나 IP 주소를 지정하면 중단을 피하려면 Vault 1.6.3 이상을 실행해야 해요. 자세한 내용은 MongoDB Atlas 문서를 참조하세요.

Programmatic API Key 접근은 IP Network Access 목록으로 제한할 수 있고 제한해야 해요. 다음 예시에서는 이 Vault 역할로 생성된 키에 대한 IP Network Access 목록에 CIDR 블록과 IP 주소가 모두 추가돼요.

$ vault write atlas/roles/test \
    roles=GROUP_CLUSTER_MANAGER \
    cidr_blocks=192.168.1.3/32 \
    ip_addresses=192.168.1.3

생성된 Programmatic API Key Vault 역할에 추가된 CIDR 블록과 IP 주소가 있는지 실행해 확인해요.

$ vault read atlas/roles/test
Key                       Value
---                       -----
cidr_blocks               [192.168.1.3/32]
ip_addresses              [192.168.1.3]
max_ttl                   1h
organization_id           n/a
roles                     [GROUP_CLUSTER_MANAGER]
project_id                5cf5a45a9ccf6400e60981b6
ttl                       30m

TTL과 최대 TTL(TTL and max TTL)

Programmatic API Key Vault는 수명(TTL)과 최대 수명(Max TTL)이 있어요. 자격 증명이 만료되면 자동으로 폐기돼요. 각 역할에 대해 또는 시크릿 엔진 구성을 튜닝해 TTL과 Max TTL을 설정할 수 있어요.

다음은 2시간 수명과 5시간 최대 수명을 가진 Project 수준 Programmatic API 키용 Vault 역할 "test"를 만드는 예시예요.

$ vault write mongodbatlas/roles/test \
    roles=GROUP_DATA_ACCESS_READ_ONLY \
    ttl=2h \
    max_ttl=5h

생성한 역할을 다음으로 확인할 수 있어요.

$ vault read mongodbatlas/roles/test
Key                Value
---                -----
organization_id    5b71ff2f96e82120d0aaec14
roles              [GROUP_DATA_ACCESS_READ_ONLY]
ttl                2h0m0s
max_ttl            5h0m0s

자격 증명 생성하기(Generating credentials)

사용자가 Vault에 인증하고 충분한 권한을 가지면, 역할에 대한 creds 엔드포인트에 대한 읽기 요청이 새 Programmatic API 키를 생성하고 반환해요.

$ vault read mongodbatlas/creds/test
Key                Value
---                -----
lease_id           mongodbatlas/creds/test/0fLBv1c2YDzPlJB1PwsRRKHR
lease_duration     2h
lease_renewable    true
description        vault-test-1563980947-1318
private_key        905ae89e-6ee8-40rd-ab12-613t8e3fe836
public_key         klpruxce

MongoDB Atlas 시크릿 엔진에는 완전한 HTTP API가 있어요. 자세한 내용은 MongoDB Atlas secrets engine API docs를 참조하세요.

Terraform

Vault Terraform 프로바이더로 MongoDB Atlas 시크릿 리소스를 프로그래밍 방식으로 관리할 수 있어요. 자세한 내용은 Terraform Registry 문서(MongoDB Atlas 시크릿 엔진 백엔드 리소스, MongoDB Atlas 시크릿 엔진 역할 리소스)를 참조하세요.

더 알아보기 (Learn more)

  • MongoDB Atlas 시크릿 엔진 API 문서를 확인해 보세요.
  • Vault Terraform 프로바이더로 MongoDB Atlas 시크릿 리소스를 관리해 보세요.