Azure Cosmos DB for PostgreSQL 인증을 위해 Microsoft Entra ID 및 네이티브 PostgreSQL 역할을 사용합니다.

적용 대상: Azure Cosmos DB for PostgreSQL(PostgreSQL에 대한 Citus 데이터베이스 확장 기반)

이 문서에서는 Azure Cosmos DB for PostgreSQL에 대한 인증 방법을 구성합니다. Azure Cosmos DB for PostgreSQL을 사용한 인증을 위해 Microsoft Entra ID 관리 사용자 및 네이티브 PostgreSQL 역할을 관리합니다. 또한 Azure Cosmos DB for PostgreSQL에서 Microsoft Entra ID 토큰을 사용하는 방법도 알아봅니다.

Azure Cosmos DB for PostgreSQL 클러스터는 'citus'라는 하나의 기본 제공 네이티브 PostgreSQL 역할로 만들어집니다. 클러스터 프로비저닝이 완료된 후 네이티브 PostgreSQL 역할을 더 추가할 수 있습니다.

Azure Cosmos DB for PostgreSQL에 대한 Microsoft Entra ID(이전의 Azure Active Directory) 인증을 구성할 수도 있습니다. 클러스터에서 네이티브 PostgreSQL 인증에 추가하거나 대신 Microsoft Entra ID 인증을 사용하도록 설정할 수 있습니다. 클러스터가 프로비전된 후 언제든지 클러스터에서 사용하도록 설정된 인증 방법을 변경할 수 있습니다. Microsoft Entra ID 인증이 사용하도록 설정되면 여러 Microsoft Entra ID 사용자를 Azure Cosmos DB for PostgreSQL 클러스터에 추가하고 이들 중 누구라도 관리자로 만들 수 있습니다. Microsoft Entra ID 사용자는 사용자 또는 서비스 주체일 수 있습니다.

인증 방법 선택

Azure Portal을 사용하여 Azure Cosmos DB for PostgreSQL 클러스터에서 인증 방법을 구성해야 합니다.

Microsoft Entra ID 인증 및 네이티브 PostgreSQL 인증을 사용하거나 사용하지 않도록 설정하려면 Azure Cosmos DB for PostgreSQL 클러스터에서 다음 항목을 완료합니다.

  1. 클러스터 페이지의 클러스터 관리 제목 아래에서 인증을 선택하여 인증 관리 옵션을 엽니다.
  2. 인증 방법 섹션에서 사용자의 요구 사항에 따라 인증 방법으로 PostgreSQL 인증만, Microsoft Entra ID 인증 또는 PostgreSQL 및 Microsoft Entra ID 인증을 선택합니다.

완료되면 동일한 인증 페이지에서 Microsoft Entra ID 인증 구성 또는 네이티브 PostgreSQL 역할 추가를 진행합니다.

Microsoft Entra ID 인증 구성

필수 조건

사용자는 Microsoft Entra ID 테넌트에서 Azure Cosmos DB for PostgreSQL에 로그인할 수 있어야 합니다. 이러한 단계는 Azure Cosmos DB for PostgreSQL 클러스터 인증에 사용될 Microsoft Entra ID 테넌트에 대해 한 번 수행해야 합니다.

Important

변경하려면 Microsoft Entra ID 테넌트 관리자 권한이 필요합니다. 권한 문제 해결 지침을 참조하세요.

  1. Azure Portal에서 'Microsoft Entra ID'를 검색합니다.
  2. 'Microsoft Entra ID' 서비스를 엽니다.
  3. Microsoft Entra ID 서비스의 개요 페이지에 있는 개요 섹션에서 'b4fa09d8-5da5-4352-83d9-05c2a44cf431' 애플리케이션 ID를 검색합니다.
  4. 검색 결과에서 'Azure Cosmos DB for PostgreSQL AAD 인증' 엔터프라이즈 애플리케이션을 선택합니다.
  5. Azure Cosmos DB for PostgreSQL AAD 인증 엔터프라이즈 애플리케이션에서 속성 페이지를 선택합니다.
  6. 사용자가 로그인할 수 있도록 설정하려고 하나요?로 설정하고 변경 내용을 저장합니다.

참고 항목

'사용자가 로그인할 수 있음'과 같은 엔터프라이즈 애플리케이션 속성을 편집하려면 전역 관리자, 클라우드 애플리케이션 관리자 또는 애플리케이션 관리자 역할에 부여된 권한이 필요합니다. 기본 제공 Microsoft Entra 역할 목록을 참조하세요.

Azure Cosmos DB for PostgreSQL 클러스터에 Microsoft Entra ID 관리자 추가

클러스터에서 Microsoft Entra ID 역할을 추가하거나 제거하려면 인증 페이지에서 다음 단계를 따릅니다.

  1. Microsoft Entra ID 인증 섹션에서 Microsoft Entra ID 관리자 추가를 선택합니다.
  2. Microsoft Entra ID 관리자 선택 패널에서 현재 AD 테넌트의 유효한 Microsoft Entra ID 사용자 또는 엔터프라이즈 애플리케이션을 하나 이상 선택하여 Azure Cosmos DB for PostgreSQL 클러스터의 Microsoft Entra ID 관리자가 되도록 합니다.
  3. 선택을 사용하여 선택을 확인합니다.
  4. 인증 페이지의 도구 모음에서 저장을 선택하여 변경 내용을 저장하거나 네이티브 PostgreSQL 역할 추가를 진행합니다.

네이티브 PostgreSQL 인증 구성

클러스터에서 Postgres 역할을 추가하려면 인증 페이지에서 다음 단계를 수행합니다.

  1. PostgreSQL 인증 섹션에서 PostgreSQL 역할 추가를 선택합니다.
  2. 역할 이름 및 암호를 입력합니다. 저장을 선택합니다.
  3. 인증 페이지의 도구 모음에서 저장을 선택하여 변경 내용을 저장하거나 Microsoft Entra ID 관리 사용자 추가를 진행합니다.

클러스터의 코디네이터 노드에 네이티브 PostgreSQL 사용자가 생성되고 모든 작업자 노드에 전파됩니다. Azure Portal을 통해 만든 역할에는 LOGIN 특성이 있는데, 이는 데이터베이스에 로그인할 수 있는 진정한 사용자임을 의미합니다.

Microsoft Entra ID 인증을 사용하여 PostgreSQL용 Azure Cosmos에 연결

Microsoft Entra ID 통합은 psql과 같은 표준 PostgreSQL 클라이언트 도구와 함께 작동합니다. 이 도구는 Microsoft Entra ID를 인식하지 않으며 PostgreSQL에 연결할 때 사용자 이름과 암호 지정만 지원합니다. 이러한 경우 Microsoft Entra ID 토큰이 암호로 전달됩니다.

다음 클라이언트를 테스트했습니다.

  • psql 명령줄: PGPASSWORD 변수를 사용하여 토큰을 전달합니다.
  • 기타 libpq 기반 클라이언트: 일반적인 애플리케이션 프레임워크 및 ORM(개체 관계형 매퍼)을 예로 들 수 있습니다.
  • pgAdmin: 서버를 만들 때 지금 연결을 선택 취소합니다.

Microsoft Entra ID를 사용하여 Azure Cosmos DB for PostgreSQL 사용자로 인증하려면 다음 절차를 따릅니다. Azure Cloud Shell, Azure Virtual Machines 또는 로컬 컴퓨터에서 따라 할 수 있습니다.

사용자의 Azure 구독에 로그인

Azure CLI를 사용하여 Microsoft Entra ID로 인증하는 것부터 시작합니다. Azure Cloud Shell에서는 이 단계가 필요하지 않습니다.

az login

이 명령은 Microsoft Entra ID 인증 페이지에 대한 브라우저 창을 엽니다. Microsoft Entra ID 사용자 이름과 암호를 제공해야 합니다.

인증하는 데 사용하는 사용자 계정 이름(예: user@tenant.onmicrosoft.com)은 다음 단계에서 액세스 토큰이 생성되는 이름입니다.

Microsoft Entra ID 액세스 토큰 검색

Azure CLI를 사용하여 Microsoft Entra ID 인증 사용자가 PostgreSQL용 Azure Cosmos에 액세스할 수 있도록 액세스 토큰을 획득합니다. 예를 들면 다음과 같습니다.

az account get-access-token --resource https://token.postgres.cosmos.azure.com

인증에 성공하면 Microsoft Entra ID가 현재 Azure 구독에 대한 액세스 토큰을 반환합니다.

{
  "accessToken": "[TOKEN]",
  "expiresOn": "[expiration_date_and_time]",
  "subscription": "[subscription_id]",
  "tenant": "[tenant_id]",
  "tokenType": "Bearer"
}

TOKEN은 Base64 문자열입니다. 이는 인증된 사용자에 대한 모든 정보를 인코딩하며 Azure Cosmos DB for PostgreSQL 서비스와 연결됩니다. 토큰은 5분 이상, 최대 90분까지 유효합니다. expiresOn은 실제 토큰 만료 시간을 정의합니다.

클라이언트 psql로 로그인하기 위한 암호로 토큰 사용

연결할 때 액세스 토큰을 PostgreSQL 사용자 암호로 사용하는 것이 좋습니다.

psql 명령줄 클라이언트를 사용하는 동안 PGPASSWORD 환경 변수를 통해 액세스 토큰을 전달해야 합니다. 그 이유는 액세스 토큰이 psql이 직접 허용할 수 있는 암호 길이를 초과하기 때문입니다.

다음은 Windows의 예입니다.

set PGPASSWORD=<TOKEN value from the previous step>
$env:PGPASSWORD='<TOKEN value from the previous step>'

다음은 Linux/macOS 예입니다.

export PGPASSWORD=<TOKEN value from the previous step>

명령 대체를 사용하여 이전 두 단계를 함께 결합할 수도 있습니다. 토큰 검색은 변수로 캡슐화되어 PGPASSWORD 환경 변수의 값으로 직접 전달될 수 있습니다.

export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)

참고 항목

PGPASSWORD 변수가 Microsoft Entra ID 인증 구독에 대한 Microsoft Entra ID 액세스 토큰으로 설정되어 있는지 확인합니다. 동일한 세션에서 Postgres 역할 인증을 수행해야 하는 경우 PGPASSWORD를 Postgres 역할 암호로 설정하거나 PGPASSWORD 변수 값을 지워 대화형으로 암호를 입력할 수 있습니다. PGPASSWORD에 잘못된 값이 있으면 인증이 실패합니다.

이제 액세스 토큰이 생성된 Microsoft Entra ID 사용자 계정을 사용하여 Azure Cosmos DB for PostgreSQL과의 연결을 시작할 수 있습니다. 일반적으로 사용자 계정을 사용자로 사용하고 명령줄에 'password' 매개 변수 없이 수행합니다.

psql "host=mycluster.[uniqueID].postgres.cosmos.azure.com user=user@tenant.onmicrosoft.com dbname=[db_name] sslmode=require"

PgAdmin으로 로그인하기 위한 암호로 토큰 사용

PgAdmin에서 Microsoft Entra ID 토큰을 사용하여 연결하려면 다음 단계를 따릅니다.

  1. 서버를 만들 때 지금 연결 옵션을 선택 취소합니다.
  2. 연결 탭에 서버 세부 정보를 입력하고 저장합니다.
    1. 사용자 이름에 유효한 Microsoft Entra ID 사용자가 지정되어 있는지 확인합니다.
  3. pgAdmin 개체 메뉴에서 서버 연결을 선택합니다.
  4. 메시지가 나타나면 Microsoft Entra ID 토큰 암호를 입력합니다.

다음은 연결할 때 몇 가지 필수 고려 사항입니다.

  • user@tenant.onmicrosoft.com은 Microsoft Entra ID 사용자의 이름입니다.
  • Azure 사용자의 철자를 정확하게 사용해야 합니다. Microsoft Entra ID 사용자 및 그룹 이름은 대/소문자를 구분합니다.
  • 이름에 공백이 포함된 경우 각 공백 앞에 백슬래시(\)를 사용하여 이스케이프합니다.
  • 액세스 토큰의 유효기간은 5분~90분입니다. Azure Cosmos for PostgreSQL에 대한 로그인을 시작하기 전에 액세스 토큰을 가져와야 합니다.

이제 Microsoft Entra ID 인증을 통해 Azure Cosmos for PostgreSQL 서버에 인증되었습니다.

네이티브 PostgreSQL 역할 관리

클러스터에서 네이티브 PostgreSQL 인증을 사용하도록 설정하면 기본 제공 'citus' 역할 외에도 Postgres 역할을 추가하고 삭제할 수 있습니다. 암호를 재설정하고 네이티브 역할에 대한 Postgres 권한을 수정할 수도 있습니다.

네이티브 PostgreSQL 사용자 역할을 삭제하거나 암호를 변경하는 방법

사용자를 업데이트하려면 클러스터의 인증 페이지를 방문하여 사용자 옆에 있는 ... 줄임표를 선택합니다. 줄임표를 클릭하면 사용자를 삭제하거나 암호를 재설정할 수 있는 메뉴가 열립니다.

citus 역할은 권한이 있으며 삭제할 수 없습니다. 그러나 클러스터에 대해 'Microsoft Entra ID 인증 전용' 인증 방법이 선택된 경우 citus 역할은 사용하지 않도록 설정됩니다.

사용자 역할의 권한을 수정하는 방법

새 사용자 역할은 일반적으로 제한된 권한을 가진 데이터베이스 액세스를 제공하는 데 사용됩니다. 사용자 권한을 수정하려면 PgAdmin 또는 psql과 같은 도구를 통해 표준 PostgreSQL 명령을 사용합니다. 자세한 내용은 클러스터에 연결을 참조하세요.

예를 들어 PostgreSQL db_usermytable을 읽을 수 있도록 하려면 다음 권한을 부여합니다.

GRANT SELECT ON mytable TO db_user;

Microsoft Entra ID 역할 user@tenant.onmicrosoft.com에 동일한 권한을 부여하려면 다음 명령을 사용합니다.

GRANT SELECT ON mytable TO "user@tenant.onmicrosoft.com";

Azure Cosmos DB for PostgreSQL은 단일 테이블 GRANT 문을 전체 클러스터에 전파하여 모든 작업자 노드에 적용합니다. 또한 시스템 전반(예: 스키마의 모든 테이블)에 걸쳐 있는 GRANT를 전파합니다.

-- applies to the coordinator node and propagates to worker nodes for Postgres role db_user
GRANT SELECT ON ALL TABLES IN SCHEMA public TO db_user;

또는 Microsoft Entra ID 역할의 경우

-- applies to the coordinator node and propagates to worker nodes for Azure AD role user@tenant.onmicrosoft.com
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "user@tenant.onmicrosoft.com";

다음 단계