AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

앱을 Atlas App Connections와 통합하기

Atlas App Connections는 MongoDB Atlas OAuth 2.1 플랫폼을 사용하여 애플리케이션 이 사용자 위임 액세스 통해 Atlas 사용자를 대신할 수 있도록 합니다. 사용자가 애플리케이션 권한을 부여하면 애플리케이션 은 Atlas 조직에서 사용자가 보유한 것과 동일한 권한으로 Atlas 관리 API 호출하는 데 사용할 수 있는 토큰 설정하다 를 수신합니다. 플랫폼에 대한 개요와 조직에서 연결된 애플리케이션을 관리 방법은 Atlas 앱 연결 개요를 참조하세요.

이 가이드 전체 통합을 다룹니다.

  • 코드 교환용 증명 키(PKCE)를 사용하여 OAuth 2.1 권한 부여 코드 흐름을 시작합니다.

  • 토큰에 대한 권한 부여 코드 교환 및 토큰 새로 고침

  • 위임된 액세스 로 Atlas 관리 API 사용

  • 위임된 액세스 의 범위 및 제한 이해

  • 네트워크 액세스 구성 및 데이터베이스 사용자 관리

  • 철회 및 오류 처리

위임된 액세스
애플리케이션 은 그 자체가 아닌 Atlas user 대신하여 작동합니다. 사용자 자신의 조직 역할과 프로젝트 권한에 따라 성공하는 작업이 결정됩니다. 사용자가 조치 수행할 수 없는 경우 애플리케이션 도 사용자를 대신하여 작업을 수행할 수 없습니다.
조직 위임 설정
각 Atlas 조직 타사 앱 연결 허용 여부를 제어합니다. 사용자가 애플리케이션 승인하더라도 특정 조직 에 대한 작업은 해당 조직 에서 타사 앱 연결을 활성화한 경우에만 성공합니다. 기존 조직에서는 위임이 기본값 으로 비활성화되어 있습니다. 사용자는 여러 조직에 속할 수 있으므로 각 조직의 위임 설정에 따라 사용자의 조직 일부에서는 단일 권한 부여 성공할 수 있고, 다른 조직에서는 실패할 수 있습니다.
코드 교환용 증명 키(PKCE)
OAuth 2.1 권한 부여 코드 플로우에 대한 보안 확장으로, 권한 부여 코드 가로채기 공격으로부터 보호합니다. PKCE는 클라이언트 임의의 code_verifier를 생성하고, 여기서 code_challenge을 도출한 다음, 권한 부여 요청 과 함께 과제 보내도록 요구합니다. 그런 다음 클라이언트 권한 부여 코드를 토큰으로 교환할 때 원본 code_verifier를 전송하여 요청 이 시작되었음을 증명합니다.

시작하기 전에 다음 사항이 있는지 확인하세요.

  • 승인된 설계 제휴하다 자격.

  • 등록된 OAuth 애플리케이션 입니다. MongoDB 온보딩 중에 client_id를 제공합니다. 컨피덴셜 클라이언트(서버 측 웹 애플리케이션)도 client_secret을(를) 받습니다. 공용 클라이언트(네이티브 및 단일 페이지 애플리케이션)는 client_id로만 인증하고 시크릿을 수신하지 않습니다.

  • OAuth 애플리케이션 에 등록된 리디렉션 URI입니다. 리디렉션 URI는 모든 포트에서 HTTP 사용할 수 있는 루프백 주소(localhost, 127.0.0.1, ::1)를 제외하고 HTTPS를 사용해야 합니다. 리디렉션 URI에는 프래그먼트(#)가 포함되어서는 안 됩니다.

  • OAuth 2.1 권한 부여 코드 흐름 및 코드 교환용 증명 키(PKCE)를 숙지합니다.

통합을 위해 MongoDB 로고와 같은 MongoDB 브랜딩 자산이 필요한 경우 MongoDB 브랜드 리소스 페이지를 참조하세요.

프로덕션에 대한 통합을 개발하고 실행합니다. Atlas 별도의 제휴하다 환경을 제공하지 않습니다.

모든 OAuth 및 API 엔드포인트는 두 개의 프로덕션 기본 URL을 사용합니다.

Base
URL

권한 부여 기준({OAUTH_BASE})

https://authorize.mongodb.com

클라우드 기반({CLOUD_BASE})

https://cloud.mongodb.com

이 가이드 전체에서 이러한 이름은 위의 URL을 대신합니다. 예시 를 들어 토큰 엔드포인트는 {OAUTH_BASE}/tokens입니다.

사용자가 로그인 하고 액세스 액세스 부여하는 권한 부여 엔드포인트는 cloud 베이스({CLOUD_BASE}/oauth/authorize)에서 호스팅되고, 토큰 및 기타 OAuth 엔드포인트는 권한 부여 베이스({OAUTH_BASE})에서 호스팅됩니다. 이러한 분할 의도된 것입니다. Atlas 관리 API cloud 기반({CLOUD_BASE}/api/atlas)에서 호스팅됩니다.

팁

엔드포인트 자동 검색

Atlas {OAUTH_BASE}/.well-known/oauth-authorization-server에 OAuth 2.1 서버 메타데이터 게시합니다. 대부분의 OAuth 클라이언트 라이브러리 및 SDK는 이 엔드포인트를 읽어 권한 부여, 토큰 및 관련 엔드포인트를 자동으로 검색하고 구성할 수 있으므로 엔드포인트 URL의 하드코딩을 방지할 수 있습니다.

Atlas 앱 연결은 코드 교환용 증명 키(PKCE)와 함께 OAuth 2.1 권한 부여 코드 흐름을 사용합니다. 이 흐름에는 사용자 상호 작용이 필요합니다. 즉, 사용자가 Atlas 에 로그인하고 애플리케이션 에서 요청하는 권한을 승인합니다.

애플리케이션, 사용자의 브라우저, MongoDB 권한 부여 엔드포인트, MongoDB 토큰 엔드포인트 및 Atlas Admin API 간의 PKCE를 사용하는 OAuth 2.1 권한 부여 코드 흐름을 보여주는 시퀀스 다이어그램입니다.
클릭하여 확대

이 흐름은 세 단계로 진행됩니다.

  1. 애플리케이션 은 PKCE 코드 검증자와 과제 생성하고 사용자를 Atlas 권한 부여 엔드포인트로 리디렉션하고 사용자는 동의 화면에서 액세스 승인합니다.

  2. 애플리케이션 은 권한 부여 코드를 액세스 토큰 및 새로 고침 토큰으로 교환합니다.

  3. 애플리케이션 은 액세스 토큰을 사용하여 Atlas 관리 API 호출하고 새로 고침 토큰을 사용하여 만료되기 전에 새 액세스 토큰을 얻습니다.

다음 매개변수를 사용하여 사용자를 Atlas 권한 부여 엔드포인트(https://cloud.mongodb.com/oauth/authorize)로 안내합니다. 애플리케이션 이 엔드포인트를 표시하는 방법(기존 창 내 리디렉션, 새 브라우저 창 또는 팝업)을 제어합니다.

Parameter
필수 사항
설명

response_type

필수 사항

code이어야 합니다.

client_id

필수 사항

애플리케이션의 클라이언트 ID 온보딩 중에 MongoDB 에서 제공합니다.

redirect_uri

필수 사항

Atlas 사용자 승인 후 권한 부여 코드를 전송하는 HTTPS URI입니다. OAuth 애플리케이션 에 등록된 URI와 일치해야 합니다.

code_challenge

필수 사항

code_verifier에서 파생된 PKCE 코드 과제 . 임의의 43~128 문자열을 code_verifier로 생성한 다음 BASE64URL(SHA256(code_verifier))를 계산합니다.

code_challenge_method

필수 사항

S256이어야 합니다. plain 메서드는 지원되지 않으며 거부되었습니다.

state

필수 사항

애플리케이션 에서 권한 부여 요청 과 콜백 사이의 상태 유지하기 위해 사용하는 불투명한 값입니다. 이를 사용하여 CSRF(교차 사이트 요청 위조) 공격으로부터 보호하고 리디렉션 후 애플리케이션 상태 복원 할 수 있습니다.

앞의 표에 있는 매개변수만 전송합니다. 권한 부여 엔드포인트에는 resource 매개변수가 필요하지 않으므로 OAuth 2.1 사양에 정의되어 있더라도 권한 부여 요청 에서 이를 생략하세요.

다음 예시 가독성을 위해 URL 여러 줄로 나누습니다. 다음과 같이 한 줄로 전송합니다.

https://cloud.mongodb.com/oauth/authorize
?response_type=code
&client_id=<YOUR_CLIENT_ID>
&redirect_uri=https://yourapp.example.com/callback
&code_challenge=<CODE_CHALLENGE>
&code_challenge_method=S256
&state=<RANDOM_STATE_VALUE>

사용자가 Atlas 에 로그인하면 애플리케이션 에서 요청하는 권한을 나열하는 동의 화면이 표시됩니다.

  • 액세스 할 수 있는 Atlas 리소스 확인

  • Atlas 조직에서 사용자를 대신하여 조치하기

동의 화면에는 사용자에 대한 다음 알림도 표시됩니다.

애플리케이션 에 권한을 부여합니다.

  • 계정의 권한을 사용하여 가능한 한 MongoDB Atlas 리소스에 액세스 하고 조치를 취할 수 있도록 허용합니다.

  • 언제든지 액세스 취소할 수 있습니다.

사용자가 Authorize을 클릭하면 Atlas 권한 부여 code, 제공한 state 값 및 iss 매개변수를 사용하여 redirect_uri로 리디렉션합니다. 사용자가 Decline를 클릭하면 Atlas error 매개변수를 사용하여 리디렉션합니다.

콜백 핸들러는 다음을 충족해야 합니다.

  1. CSRF 공격을 방지하기 위해 state가 권한 부여 요청 에서 전송한 값과 일치하는지 확인합니다.

  2. 권한 부여 서버 혼동 공격을 방지하기 위해 iss가 권한 부여 기준(https://authorize.mongodb.com)과 일치하는지 확인합니다.

  3. error 매개변수를 확인하고 code 사용을 시도하기 전에 정상적으로 거부를 처리하다 .

인증 코드는 일회용이며 10분 이내에 만료됩니다. 즉시 교환하세요.

Atlas 토큰 엔드포인트에 POST 요청 전송하여 권한 부여 코드를 토큰으로 교환합니다.

POST https://authorize.mongodb.com/tokens
본문 매개변수
필수 사항
설명

grant_type

필수 사항

authorization_code이어야 합니다.

code

필수 사항

리디렉션에서 받은 권한 부여 코드입니다.

redirect_uri

필수 사항

권한 부여 요청 에 사용된 것과 동일한 리디렉션 URI입니다.

code_verifier

필수 사항

원본 PKCE 코드 검증자 문자열입니다.

client_id

필수 사항

애플리케이션의 클라이언트 ID.

client_secret

조건부

애플리케이션의 클라이언트 시크릿입니다. 기밀 클라이언트(서버 측 웹 애플리케이션)에만 필요합니다. 공용 클라이언트(네이티브 및 단일 페이지 애플리케이션)는 client_id로만 인증하고 이 매개변수를 생략합니다.

예 요청 :

curl --request POST \
--url https://authorize.mongodb.com/tokens \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'grant_type=authorization_code' \
--data 'code=<AUTHORIZATION_CODE>' \
--data 'code_verifier=<CODE_VERIFIER>' \
--data 'redirect_uri=https://yourapp.example.com/callback' \
--data 'client_id=<YOUR_CLIENT_ID>' \
--data 'client_secret=<YOUR_CLIENT_SECRET>'

응답에는 다음이 포함됩니다.

필드
유형
설명

access_token

문자열

Atlas 관리 API 요청을 인증하기 위한 베어러 토큰입니다. 수명이 짧습니다. 전체 수명을 하드코딩하는 대신 expires_in 값에 의존하여 새로 고침 시기를 결정하세요.

refresh_token

문자열

토큰은 현재 액세스 토큰이 만료될 때 새 액세스 토큰을 얻는 데 사용됩니다. 안전하게 보관하세요.

token_type

문자열

항상 Bearer.

expires_in

integer

액세스 토큰 수명(초)입니다. 현재 600(10분)입니다. 기본값 이 변경될 수 있으므로 수명을 하드코딩하는 대신 이 값에 따라 새로 고침 시기를 결정합니다.

액세스 토큰은 수명이 짧습니다(현재 10분). 만료 후 Atlas 관리 API 호출하기 전에 새로 고침 토큰을 새 액세스 토큰으로 교환하세요.

curl --request POST \
--url https://authorize.mongodb.com/tokens \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'grant_type=refresh_token' \
--data 'refresh_token=<YOUR_REFRESH_TOKEN>' \
--data 'client_id=<YOUR_CLIENT_ID>' \
--data 'client_secret=<YOUR_CLIENT_SECRET>'

응답은 항상 새로운 access_token 및 새로운 refresh_token을 반환합니다. 이전 새로 고침 토큰은 즉시 무효화됩니다. 항상 저장된 값을 모두 바꿉니다.

중요

새로 고침 토큰은 7일의 비활성(유휴 수명) 후에 만료됩니다. 활동에 관계없이 사용자는 30일(최대 수명)마다 재인증해야 합니다. 조직 소유자는 더 엄격한 제한을 구성할 수 있습니다. 새로 고침 토큰이 만료되면 사용자는 애플리케이션 다시 인증해야 합니다. 사용자에게 다시 연결하라는 메시지를 표시하여 이 문제를 정상적으로 처리하다 하도록 애플리케이션 설계합니다.

액세스 토큰을 얻은 후 이를 사용하여 Authorization 헤더에 포함하여 Atlas 관리 API 요청을 수행합니다.

Authorization: Bearer <ACCESS_TOKEN>

예 요청 :

curl --request GET \
--url 'https://cloud.mongodb.com/api/atlas/v2/orgs' \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
--header 'Accept: application/vnd.atlas.2023-01-01+json'

애플리케이션 은 각 요청 시 권한을 부여한 사용자가 보유한 것과 동일한 권한으로 작동합니다. 권한 부여 후 사용자의 역할이 변경되면 그에 따라 애플리케이션의 유효 권한도 변경됩니다.

특정 Atlas 조직 에 대한 작업은 다음 두 가지 모두에 해당하는 경우에만 성공합니다.

  • 조직 에 타사 앱 연결이 활성화되어 있습니다. 조직 소유자는 Organization Settings > App Connections. 이러한 설정에 대해 자세히 학습 Atlas 앱 연결 개요를 참조하세요.

  • 권한을 부여하는 사용자는 해당 조직 또는 프로젝트 내에서 작업에 필요한 역할 가집니다.

사용자가 이미 애플리케이션 권한을 부여한 후 조직 에 대해 위임이 비활성화된 경우, 해당 조직 대상으로 하는 API 호출은 403 Forbidden 응답을 반환합니다.

권한 부여 완료되었다고 해서 Atlas 관리 API 호출의 성공이 보장되는 것은 아닙니다. Atlas 권한 부여 시점에 한 번이 아닌 모든 요청 에서 조직의 위임 설정과 사용자의 역할을 평가하므로 요청이 여전히 403 Forbidden을 반환하는 동안 OAuth 흐름 및 동의 화면이 깨끗하게 완료될 수 있습니다.

권한 부여 후 GET /api/atlas/v2/orgs를 호출하여 애플리케이션 이 어떤 조직에서 조치를 취할 수 있는지 확인합니다. Atlas 타사 앱 연결을 허용하는 조직만 반환하므로 목록이 비어 있으면 사용자가 속한 조직에서 타사 앱 연결을 허용한 조직 없다는 의미입니다.

빈 목록은 설정 단계이며 실패가 아닙니다. 사용자에게 조직 소유자에게 조직 에 대한 앱 연결을 활성화 하도록 요청하고 Atlas App Connections Overview( Atlas 앱 연결 개요)를 가리키도록 요청하라는 메시지를 점 . 사용자의 자격 증명 과 동의가 유효하므로 빈 목록을 권한 부여 또는 인증 오류로 표시하지 않도록 합니다.

위임된 액세스 는 권한 부여하는 사용자의 고유한 권한을 수반하므로 쓰기 (write) 작업도 해당 사용자의 역할에 따라 달라집니다. 일반적인 프로비저닝 작업에는 다음과 같은 역할이 필요합니다.

Organization Member 역할 만 가진 사용자는 액세스 이 있는 리소스를 읽을 수 있지만 쓰기 (write) 작업은 403 Forbidden를 반환합니다. 오류 처리에서 필요한 역할 의 이름을 지정하여 사용자가 올바른 역할 요청 수 있도록 합니다. 사용 가능한 모든 역할에 대해 학습 Atlas 사용자 역할을 참조하세요.

애플리케이션 에서 사용자를 대신하여 조직 만드는 경우 새 조직 아직 타사 앱 연결을 허용하지 않습니다. 이를 활성화하는 것은 수동 단계입니다. 조직 허용 목록에 추가하려면 MongoDB 문의 . 그때까지는 사용자가 애플리케이션 승인했더라도 애플리케이션 조직 에 영향을 미칠 수 없습니다.

위임된 액세스 대부분의 Atlas 관리 API 엔드포인트에 도달하지만, Atlas 권한 부여 사용자의 권한에 관계없이 일부 엔드포인트를 다르게 취급합니다.

차단된 엔드포인트는 권한을 부여하는 사용자가 일반적으로 작업을 허용하는 역할 가지고 있는 경우에도 403 Forbidden 응답을 반환합니다. Atlas 페더레이션 및 싱글 사인온(SSO) 구성을 읽고 수정하는 페더레이션 설정 엔드포인트를 차단합니다. ID 제공자 구성은 페더레이션의 모든 조직 에서 공유되므로 이에 대한 위임된 액세스 애플리케이션 승인한 적이 없는 조직을 노출하거나 중단시킬 수 있습니다.

필터링된 엔드포인트는 호출을 수락하지만 타사 앱 연결을 선택한 조직에 따라 보거나 변경할 수 있는 항목을 제한합니다. 애플리케이션 해당 조직에만 연결할 수 있으며, Atlas 옵트인하지 않은 조직 의 리소스에 대한 액세스 차단합니다.

사용자가 액세스 할 수 있는 모든 조직, 프로젝트 또는 클러스터 나열하는 엔드포인트와 같이 여러 조직에 걸쳐 있는 엔드포인트는 타사 앱 연결을 허용하는 조직만 반환합니다. 리소스를 생성하는 요청의 경우 Atlas 대상 조직 유효성을 검사하고 해당 조직 옵트인하지 않은 경우 호출을 거부합니다.

조직 소유자가 Organization Settings > App Connections. 자세한 학습 은 권한 및 조직 위임 설정을 참조하세요.

Atlas 시간이 지남에 따라 위임된 액세스 에 대해 추가 엔드포인트를 차단 하거나 필터하다 할 수 있습니다.

Atlas 관리 API 조직, 프로젝트, 클러스터, 사용자와 같은 Atlas 리소스를 생성, 구성 및 관리 할 수 있는 컨트롤 플레인 액세스 제공합니다. 직접적인 데이터 플레인 액세스 (데이터베이스의 문서 읽기 또는 쓰기)는 제공하지 않습니다.

Atlas 클러스터의 데이터에 액세스 하려면 Atlas 관리 API 통해 클러스터 연결 문자열 조회 하고 데이터베이스 사용자와 MongoDB 운전자 또는 셸 사용하여 연결합니다. 연결 문자열 과 데이터베이스 자격 증명 은 OAuth 베어러 토큰과 별개입니다.

철회는 컨트롤 플레인과 데이터 플레인 액세스 서로 다른 영향을 미칩니다.데이터 플레인 효과를 참조하세요.

위임된 액세스 애플리케이션의 토큰을 권한 부여 사용자에게 연결합니다. 해당 사용자의 역할이 변경되거나, 사용자가 오프보딩되거나, 사용자가 새로 고침 토큰 수명 내에 재인증하지 않으면 통합 자체가 아직 활성 상태이더라도 애플리케이션 필요한 권한을 잃게 됩니다.

클러스터 크기를 조정하거나 지속적으로 배포서버 리전을 변경하는 예시 특정 사용자의 권한 유지에 의존하지 않는 지속적인 Atlas 관리 API 액세스 통합에 필요한 경우, 위임된 액세스 에 의존하는 대신 고객의 조직 및 프로젝트 에 대한 서비스 계정을 생성하세요. 해당 워크플로의 경우.

서비스 계정은 인증 코드 흐름이 아닌 OAuth 2.0 클라이언트 자격 증명 흐름을 사용하여 인증하므로 사용자의 진행 중인 세션에 의존하지 않습니다. 각 서비스 계정은 하나의 조직 에 속하며, 해당 조직 내의 프로젝트 수에 관계없이 해당 계정에 액세스 을 부여할 수 있습니다. Atlas 역할은 역할이 사용자를 제한하는 것과 같은 방식으로 서비스 계정의 액세스 토큰이 인증할 수 있는 작업을 제한합니다. 서비스 계정은 Atlas UI 에 로그인할 수 없으며 위임된 액세스 과 마찬가지로 데이터 영역 액세스 제공하지 않습니다.

고객의 조직 에 대한 서비스 계정을 만들려면 서비스 계정 개요 및 조직에 대한 서비스 계정 만들기를 참조하세요.

대부분의 제휴하다 통합은 권한 부여 사용자를 대신하여 Atlas 리소스를 프로비저닝합니다. 다음 시퀀스는 인증된 연결에서 사용 가능한 연결 문자열 까지의 공통 경로를 다룹니다. 각 요청 2단계: 토큰 교환의 베어러 토큰을 사용합니다.

1

GET /api/atlas/v2/orgs를 호출하여 권한이 부여된 사용자가 액세스 할 수 있는 조직을 나열한 다음 GET /api/atlas/v2/orgs/{orgId}/groups을 호출하여 조직 내의 프로젝트를 나열합니다.

타사 앱 연결을 허용하는 조직만 사용 가능한 대상으로 표시됩니다. 자세한 학습 은 권한 및 조직 위임 설정을 참조하세요.

2

프로젝트 이름과 대상 조직 의 orgId을(를) 사용하여 POST /api/atlas/v2/groups을(를) 호출합니다. Atlas 요청 본문에서 orgId의 유효성을 검사하고 해당 조직 타사 앱 연결을 허용하지 않는 경우 403 Forbidden를 반환합니다.

3

클러스터 이름, 클러스터 유형 및 복제 사양을 사용하여 POST /api/atlas/v2/groups/{groupId}/clusters을(를) 호출합니다. 클러스터 생성은 비동기식입니다. 클러스터의 stateName가 IDLE이 될 때까지 GET /api/atlas/v2/groups/{groupId}/clusters/{clusterName}을 폴링합니다.

4

POST /api/atlas/v2/groups/{groupId}/databaseUsers를 호출하여 애플리케이션 이 데이터 영역 액세스 에 사용하는 ID를 생성합니다. 역할 및 수명 주기 지침 데이터베이스 사용자 수명 주기를 참조하세요.

5

애플리케이션의 아웃바운드 IP 주소를 프로젝트 액세스 목록에 추가하거나 비공개 연결 옵션을 구성합니다. 자세한 학습 은 네트워크 구성 및 IP 허용 목록을 참조하세요.

6

클러스터 리소스 에서 connectionStrings 필드 읽은 다음, 생성한 데이터베이스 사용자를 사용하여 MongoDB 운전자 와 연결합니다. 연결 문자열 과 데이터베이스 자격 증명 은 OAuth 베어러 토큰과 별개입니다.

각 엔드포인트에 대한 전체 요청 및 응답 스키마는 Atlas 관리 API 사양을 참조하세요.

Atlas 관리 API 공용 인터넷을 통해서만 사용할 수 있습니다. 가상 사설 cloud (VPC) 피어링 또는 비공개 엔드포인트 통해서는 사용할 수 없습니다. 애플리케이션 은 포트 443에서 cloud.mongodb.com에 연결할 수 있어야 합니다.

참고

Atlas 관리 API 에 대한 위임된 액세스 고객이 구성한 모든 컨트롤 플레인 API 액세스 목록(API 키 IP 허용 목록) 제한을 우회합니다. 액세스는 컨트롤 플레인 IP 제한이 아닌 권한을 부여하는 사용자의 권한과 조직의 위임 설정에 의해 관리됩니다. 자세히 학습 제한 사항을 참조하세요.

데이터 영역 액세스 의 경우 연결하려는 Atlas cluster 에 IP 액세스 목록 구성되어 있을 수 있습니다. 애플리케이션의 아웃바운드 IP 주소를 클러스터의 IP 액세스 목록 에 추가하거나 배포서버 에 적합한 네트워크 피어링 또는 비공개 엔드포인트를 구성해야 합니다.

초기 출시하다 의 연결 패턴:

  • 애플리케이션 데이터 플레인 액세스 위한 IP 허용 목록을 구성할 책임이 있습니다. 이 작업은 Atlas 앱 연결 플랫폼에서 자동으로 처리되지 않습니다.

  • 애플리케이션 프로비저닝하거나 액세스하는 각 클러스터 에 대해 POST /api/atlas/v2/groups/{groupId}/accessList 엔드포인트를 사용하여 클러스터의 IP 액세스 목록 에 아웃바운드 IP 또는 클래스 없는 도메인 간 라우팅(CIDR) 범위를 추가합니다.

  • 데이터 영역을 공용 인터넷에 노출하지 마세요. 항상 IP 액세스 목록 또는 네트워크 피어링 또는 비공개 엔드포인트 와 같은 비공개 연결을 사용하여 데이터 영역 액세스 제한합니다.

사용자를 대신하여 Atlas 클러스터를 프로비저닝 때 애플리케이션 데이터베이스 사용자를 생성하고 관리 해야 할 수 있습니다. 초기 출시하다 에서는 다음 패턴이 지원됩니다.

권한 부여 사용자의 베어러 토큰을 사용하여 Atlas 관리 API 엔드포인트 POST /api/atlas/v2/groups/{groupId}/databaseUsers를 통해 데이터베이스 사용자를 생성합니다. 사용자는 데이터베이스 사용자 관리 허용하는 프로젝트 역할 보유해야 합니다.

  • 데이터베이스 사용자 제한을 준수합니다. Atlas 프로젝트 당 100 데이터베이스 사용자의 기본값 제한을 적용합니다. 각 작업마다 새 사용자를 만드는 대신 가능한 경우 기존 데이터베이스 사용자를 재사용하고, 한도에 도달하지 않도록 더 이상 필요하지 않은 사용자의 프로비저닝을 해제하세요.

  • 범위가 지정된 역할을 사용합니다. atlasAdmin 대신 사용 사례 에 필요한 최소 데이터베이스 역할로 데이터베이스 사용자를 생성하세요.

  • 더 이상 필요하지 않은 경우 사용자의 프로비저닝을 해제합니다. 사용자가 애플리케이션 에 대한 액세스 취소하는 경우 애플리케이션 에서 사용자를 대신하여 생성한 데이터베이스 사용자를 모두 삭제 . Atlas 액세스 취소될 때 데이터베이스 사용자를 자동으로 제거 하지 않습니다.

  • 정의된 예정 에 따라 자격 증명 교체합니다. 애플리케이션 에 데이터베이스 사용자 비밀번호가 저장되는 경우, PATCH /api/atlas/v2/groups/{groupId}/databaseUsers/ {databaseName}/{username} 엔드포인트를 사용하여 정기적으로 비밀번호를 교체하세요.

중요

Atlas 사용자가 액세스 해지할 때 애플리케이션 생성한 데이터베이스 사용자 또는 기타 리소스를 자동으로 삭제 하지 않습니다. 애플리케이션 은 생성된 리소스를 정리할 책임이 있습니다. 데이터베이스 사용자의 프로비저닝을 해제하지 못하면 애플리케이션 끊은 후에도 사용자의 Atlas 계정에 자격 증명 활성 상태로 유지됩니다. 자세히 학습 제한 사항을 참조하세요.

Atlas 데이터베이스 사용자 비밀번호와 같이 애플리케이션 에서 프로비저닝한 리소스 에 대한 자격 증명 로테이션하는 경우, 자격 증명 직접 업데이트 할 필요 없이 선택적 웹훅을 통해 애플리케이션 에 알릴 수 있습니다. 이는 OAuth client_secret 로테이션과 관련이 없습니다. 이에 대해서는 토큰 및 비밀 저장소를 참조하세요. 웹훅을 구현 하려면 자격 증명 순환 웹훅 구현을 참조하세요.

이 섹션에서는 통합에서 자격 증명 및 민감한 정보를 처리하기 위한 최소 보안 요구 사항에 대해 설명합니다. 이러한 관행은 보안 사고의 폭발 반경을 줄이며 설계 파트너에게 필요합니다.

애플리케이션 은 미사용 데이터 암호화됨 해야 하는 여러 범주의 민감한 정보를 처리합니다.

  • 연결 문자열. Atlas 연결 문자열에는 내장된 자격 증명 또는 참조 데이터베이스 사용자가 포함되어 있습니다. 고급 암호화 표준(AES)-256 또는 이에 상응하는 암호화 사용하여 저장된 연결 문자열을 암호화합니다. 구성 파일, 환경 변수 저장소 또는 데이터베이스에 연결 문자열을 일반 텍스트로 저장 하지 마세요.

  • OAuth 토큰. 새로 고침 토큰은 수명이 긴 자격 자격 증명 입니다. 암호화됨 시크릿 관리자( 예시: HashiCorp Vault, Amazon Web Services (AWS) Secrets 관리자 또는 Azure Key Vault )에 저장합니다. 새로 고침 토큰을 암호화 하지 않고 애플리케이션 데이터베이스 에 저장 하지 마세요.

  • 클라이언트 비밀. client_secret은(는) 비밀번호와 동일합니다. 비밀 관리자에 저장했다가 노출이 의심되는 경우 순환시키세요.

팁

시크릿리스 인증 선호

Atlas PKCE를 사용한 시크릿리스 인증 지원하므로 client_secret를 완전히 관리 할 필요가 없습니다. 클라이언트 유형에 따라 허용되는 경우, 클라이언트 시크릿을 프로비저닝 하고 저장하는 대신 시크릿 없는 인증 가장 안전한 옵션으로 사용하세요.

애플리케이션 이 사용자를 대신하여 Atlas 관리 API 에서 연결 문자열을 검색하는 경우:

  • 가능한 경우 연결 문자열을 장기간 저장하는 대신 필요한 시점에 검색합니다.

  • 애플리케이션 에서 연결 문자열 유지해야 하는 경우, 필요한 항목( 예시: 호스트 이름 및 포트)만 자격 증명 과 별도로 저장 .

  • 연결 문자열을 로그 하거나 오류 메시지 또는 스택 추적에 포함하지 마세요.

  • 토큰이나 시크릿을 소스 제어에 커밋 하지 마세요.

  • 액세스 토큰, 새로 고침 토큰 또는 클라이언트 비밀을 로그 하지 마세요. 애플리케이션 디버깅을 위해 Atlas 관리 API 요청을 기록하는 경우 Authorization 헤더를 수정하세요.

  • 시크릿 관리자의 시크릿에 대한 액세스 이를 필요한 서비스로만 제한합니다.

  • 손상이 의심되는 경우 client_secret를 주기적으로 즉시 회전하세요. OAuth 애플리케이션 과 연결된 시크릿을 로테이션하려면 MongoDB 에 문의하세요.

해지 동작을 이해하는 것은 복원력이 뛰어난 통합을 설계하는 데 중요합니다. 철회는 여러 가지 방법으로 트리거될 수 있으며 컨트롤 플레인과 데이터 플레인 액세스 서로 다른 영향을 미칩니다.

철회는 다음 조치 중 하나를 통해 발생할 수 있습니다.

  • 사용자가 Atlas UI 에서 액세스 취소했습니다(User Settings > Connected Apps).

  • 조직 소유자가 Organization Settings에서 전체 조직 에 대한타사 앱 연결을 제한합니다.

  • 조직의 최대 새로 고침 토큰 수명에 도달했거나 토큰이 유휴 수명 제한을 초과하여 유휴 상태였기 때문에 새로 고침 토큰이 만료됩니다.

  • 애플리케이션 은 더 이상 액세스 할 필요가 없을 때 자체 토큰을 해지합니다.

중요

위의 트리거는 OAuth 흐름을 통해 발급된 토큰을 해지합니다. 서비스 계정은 개별 사용자의 권한 부여 에 연결되지 않으므로 지속적인 액세스 위해 만든 서비스 계정( 서비스 계정을 통한 지속적인 액세스 참조)에는 영향을 주지 않습니다.

개별 사용자가 위임된 액세스 을 해지했거나 조직 에서 오프보딩되었다는 이유만으로 고객의 서비스 계정 자격 증명 해지하거나 삭제 하지 마세요. 서비스 계정은 해당 사용자의 개별 액세스 아닌 통합의 지속적인 권한 부여 나타냅니다.

고객이 계정에서 통합을 삭제하거나 연결을 끊으면 제품에서 해당 조치 의미하는 바에 따라 서비스 계정의 자격 증명 해지하세요.

사용자가 자체 인터페이스에서 애플리케이션 의 연결을 끊거나 통합에 더 이상 액세스 필요하지 않은 경우 토큰이 만료되도록 두지 말고 해지하세요. 해지 엔드포인트에 POST 요청 보냅니다.

curl --request POST \
--url https://authorize.mongodb.com/tokens/revoke \
--header 'Content-Type: application/x-www-form-urlencoded' \
--user '<YOUR_CLIENT_ID>:<YOUR_CLIENT_SECRET>' \
--data 'token=<REFRESH_OR_ACCESS_TOKEN>' \
--data 'token_type_hint=refresh_token'
Parameter
필수 사항
설명

token

필수 사항

해지할 액세스 토큰 또는 새로 고침 토큰입니다.

token_type_hint

옵션

access_token 또는 refresh_token 중 하나입니다. 서버 토큰 조회를 최적화하는 데 도움이 됩니다.

새로 고침 토큰을 해지하면 토큰에서 발급된 모든 액세스 토큰도 무효화됩니다. 엔드포인트는 토큰의 유효성 여부에 관계없이 200 OK을 반환하므로 성공 응답을 토큰이 존재한다는 증명이 아니라 더 이상 사용할 수 없다는 확인으로 처리합니다.

철회가 적용되는 속도는 액세스 철회한 사람에 따라 달라집니다.

  • 조직 소유자가 타사 앱 연결을 제한하는 경우: Atlas 관리 API 모든 호출에서 조직의 위임 설정을 확인하므로 해당 조직 대한 요청이 즉시 403 Forbidden을 반환하기 시작합니다.

  • 사용자가 애플리케이션의 액세스 취소하는 경우: 새로 고침 토큰은 즉시 무효화되지만 이미 발급된 액세스 토큰은 만료될 때까지 유효합니다. 액세스 토큰은 수명이 짧기 때문에 애플리케이션 최대 10분 동안 계속 성공적인 호출을 할 수 있습니다. 그 후에는 호출이 401 Unauthorized을 반환합니다.

  • MongoDB OAuth 클라이언트 삭제합니다: 해지는 애플리케이션 연결된 모든 조직 에서 계단식으로 진행되며, 완료하는 데 최대 15분이 걸립니다.

즉각적인 전파에 의존하기보다는 401 및 403 응답을 사전에 처리하다 하도록 애플리케이션 설계하세요.

Atlas 관리 API 액세스 취소해도 기존 데이터 영역 연결이 즉시 종료되지는 않습니다. 애플리케이션 은 생성한 데이터베이스 사용자를 통해 데이터 영역에 도달하여 OAuth 토큰과 독립적인 자격 증명 으로 인증합니다. 토큰을 해지해도 해당 자격 증명 무효화되지 않습니다. 열린 MongoDB 운전자 세션과 연결 풀 연결은 시간 초과, 유휴 종료 또는 애플리케이션 의 명시적 종료와 같은 정상적인 연결 수명 주기 이벤트에 의해 닫힐 때까지 활성 상태로 유지됩니다.

철회해도 애플리케이션 에서 생성한 데이터베이스 사용자는 제거 않으므로 연결 해제 과정에서 해당 사용자를 삭제하세요. 자세한 학습 은 데이터베이스 사용자 수명 주기를 참조하세요.

Scenario
상태
권장 조치

액세스 토큰 만료

401

새로 고침 토큰을 사용하여 새 액세스 토큰을 얻습니다.

액세스 토큰 해지

401

사용자에게 재인증하라는 메시지를 표시합니다. 새로 고침 토큰도 무효화됩니다.

새로 고침 토큰이 만료되었거나 취소되었습니다.

400

사용자에게 재인증하라는 메시지를 표시합니다. 권한 부여 코드 흐름을 다시 시작합니다.

잘못된 클라이언트 자격 증명

401

client_id 및 client_secret를 확인합니다.

조직 에서 위임이 비활성화되었습니다.

403

사용자에게 Atlas 조직 에서 타사 앱 연결을 허용하지 않는다고 알립니다. 조직 소유자에게 안내합니다.

차단된 엔드포인트

403

요청된 엔드포인트는 위임된 액세스 통해 사용할 수 없습니다. 통합에서 호출을 제거합니다.

사용자에게 필요한 역할 부족합니다.

403

권한을 부여하는 사용자에게 이 작업에 필요한 역할 없습니다. 사용자에게 이를 알리고 조직 소유자에게 필요한 역할 요청 하도록 제안합니다.

권한 부여 및 토큰 엔드포인트의 오류는 표준 OAuth 구조를 따릅니다.

{
"error": "error_code",
"error_description": "Human-readable explanation"
}

다음 표에는 일반적인 error 값이 나열되어 있습니다.

오류 코드
언제
권장 조치

invalid_request

필수 매개변수가 누락되었거나 형식이 잘못되었습니다.

필수 매개변수와 서식을 확인하세요.

invalid_client

클라이언트 인증 실패했습니다.

client_id 및 client_secret를 확인합니다.

invalid_grant

권한 부여 코드가 만료되었거나 이미 사용되었거나 새로 고침 토큰이 유효하지 않습니다.

권한 부여 코드 흐름을 다시 시작합니다.

unauthorized_client

클라이언트 에 이 권한 부여 유형에 대한 권한이 없습니다.

클라이언트 등록에 authorization_code가 포함되어 있는지 확인합니다.

access_denied

사용자가 동의를 거부했습니다.

사용자에게 알립니다. 자동으로 다시 시도하지 마세요.

invalid_target

resource 매개변수가 잘못되었거나 누락되었습니다.

리소스 클라이언트 에 등록되어 있는지 확인합니다.

unsupported_token_type

token_type_hint 값이 잘못되었습니다.

access_token 또는 refresh_token을 사용합니다.

동일한 권한 부여 코드가 두 번 이상 제시되면 서버 코드 가로채기에 대한 보안 조치로 해당 권한 부여와 관련된 모든 토큰을 무효화합니다. 이 경우 사용자는 처음부터 다시 인증해야 합니다.

MongoDB 사고 대응 또는 제휴하다 오프보딩 예시 등록된 클라이언트 비활성화할 수 있습니다. 클라이언트 비활성화된 동안 서버 새 권한 부여 흐름을 시작하거나 새 토큰을 발급하는 것을 거부합니다.

  • 권한 부여 부여 엔드포인트는 error=access_denied 및 client is disabled의 error_description를 사용하여 사용자를 redirect_uri로 리디렉션합니다.

  • 토큰 엔드포인트는 invalid_client 및 동일한 설명과 함께 401을 반환합니다. 이는 refresh_token를 포함한 모든 권한 부여 유형에 적용되므로 비활성화된 상태에서는 애플리케이션 기존 새로 고침 토큰을 교환할 수 없습니다.

클라이언트 비활성화되기 전에 발급된 액세스 토큰은 만료될 때까지 유효합니다. 클라이언트 를 비활성화하면 기존 토큰이 무효화되는 대신 새 토큰이 차단됩니다.

비활성화된 클라이언트 자체적으로 복구할 수 없습니다. client is disabled를 최종 조건으로 취급하여 재시도를 중지하고 실패를 표시한 다음 MongoDB 제휴하다 팀 문의 클라이언트 다시 활성화합니다.

이 페이지 평가하기