다음을 통해 공유


Azure Database for PostgreSQL - 유연한 서버 인증을 위해 Microsoft Entra ID 사용

적용 대상: Azure Database for PostgreSQL - 유연한 서버

이 문서에서는 Azure Database for PostgreSQL 유연한 서버로 인증하기 위한 Microsoft Entra ID 액세스 권한을 구성합니다. Azure Database for PostgreSQL 유연한 서버에서 Microsoft Entra 토큰을 사용하는 방법도 알아봅니다.

서버 프로비전 중 또는 나중에 Azure Database for PostgreSQL 유연한 서버에 대한 Microsoft Entra 인증을 구성할 수 있습니다. Microsoft Entra 관리자 사용자만 Microsoft Entra ID 기반 인증을 위한 사용자를 만들거나 사용하도록 설정할 수 있습니다. Microsoft Entra 관리자는 관리자 권한(예: CREATEDB)을 가지고 있기 때문에 일반 데이터베이스 작업에 Azure AD 관리자를 사용하지 않는 것이 좋습니다.

Azure Database for PostgreSQL 유연한 서버를 사용하여 여러 Microsoft Entra 관리 사용자를 가질 수 있습니다. Microsoft Entra 관리 사용자는 사용자, 그룹 또는 서비스 주체일 수 있습니다.

필수 조건

네트워크 요구 사항 구성

Microsoft Entra ID는 다중 테넌트 애플리케이션입니다. Microsoft Entra 관리자 그룹 추가와 같은 특정 작업을 수행하려면 아웃바운드 연결이 필요합니다. 또한 네트워크 토폴로지에 따라 Microsoft Entra 연결에 대한 네트워크 규칙이 필요합니다.

  • 공용 액세스(허용된 IP 주소): 추가 네트워크 규칙이 필요하지 않습니다.

  • 프라이빗 액세스(가상 네트워크 통합):

    • 가상 네트워크 트래픽이 AzureActiveDirectory 서비스 태그에만 도달하도록 허용하려면 아웃바운드 NSG(네트워크 보안 그룹) 규칙이 필요합니다.
    • 경로 테이블을 사용하는 경우 대상 서비스 태그 AzureActiveDirectory와 다음 홉 Internet을 사용하여 규칙을 만들어야 합니다.
    • 선택적으로 프록시를 사용하는 경우 HTTP/S 트래픽이 AzureActiveDirectory 서비스 태그에만 도달하도록 허용하는 새 방화벽 규칙을 추가할 수 있습니다.
  • 사용자 지정 DNS: VNET(Virtual Network)에서 사용자 지정 DNS를 사용하는 경우 추가 고려 사항이 있습니다. 이러한 경우 다음 엔드포인트가 해당 IP 주소로 확인되도록 하는 것이 중요합니다. . login.microsoftonline.com: 이 엔드포인트는 인증 목적으로 사용됩니다. 사용자 지정 DNS 설정을 통해 graph.microsoft.com을 올바른 IP 주소로 확인할 수 있는지 검토합니다. login.microsoftonline.com: 이 엔드포인트는 Microsoft Graph API에 액세스하는 데 사용됩니다. 사용자 지정 DNS 설정을 통해 graph.microsoft.com이 올바른 IP 주소로 확인될 수 있는지 검토합니다.

서버 프로비저닝 중에 Microsoft Entra 관리자를 설정하려면 다음 단계를 수행합니다.

  1. Azure Portal에서 서버 프로비저닝 중에 PostgreSQL 및 Microsoft Entra 인증 또는 Microsoft Entra 인증만 인증 방법으로 선택합니다.
  2. 관리자 설정 탭에서 Microsoft Entra 관리자가 될 유효한 Microsoft Entra 사용자, 그룹, 서비스 주체 또는 고객 테넌트의 관리 ID를 선택합니다.

PostgreSQL 및 Microsoft Entra 인증 방법을 선호하는 경우 선택적으로 로컬 PostgreSQL 관리자 계정을 추가할 수 있습니다.

참고 항목

서버 프로비전 중에 하나의 Azure 관리 사용자만 추가할 수 있습니다. 서버를 만든 후 여러 Microsoft Entra 관리 사용자를 추가할 수 있습니다.

서버 프로비전 중에 Microsoft Entra 관리자를 설정하기 위한 선택 항목을 보여 주는 스크린샷.]

서버를 만든 후 Microsoft Entra 관리자를 설정하려면 다음 단계를 따릅니다.

  1. Azure Portal에서 Microsoft Entra ID에 사용하도록 설정하려는 Azure Database for PostgreSQL 유연한 서버의 인스턴스를 선택합니다.
  2. 보안에서 인증을 선택합니다. 그런 다음, 요구 사항에 따라 PostgreSQL 및 Microsoft Entra 인증 또는 Microsoft Entra 인증만 중 하나를 인증 방법으로 선택합니다.
  3. Microsoft Entra 관리자 추가를 선택합니다. 그런 다음, Microsoft Entra 관리자가 될 유효한 Microsoft Entra 사용자, 그룹, 서비스 주체 또는 고객 테넌트의 관리 ID를 선택합니다.
  4. 저장을 선택합니다.

서버를 만든 후 Microsoft Entra 관리자를 설정하기 위한 선택 항목을 보여 주는 스크린샷

Important

관리자를 설정하면 Azure Database for PostgreSQL 유연한 서버에 전체 관리자 권한이 있는 새 사용자가 추가됩니다.

Microsoft Entra ID를 사용하여 Azure Database for PostgreSQL에 연결

다음 개략적인 다이어그램은 Azure Database for PostgreSQL에서 Microsoft Entra 인증을 사용하는 워크플로를 요약합니다.

Microsoft Entra ID, 사용자의 컴퓨터 및 서버 간의 인증 흐름 다이어그램

Microsoft Entra ID 통합은 psql과 같은 표준 PostgreSQL 도구와 함께 작동합니다. 이 도구는 Microsoft Entra를 인식하지 않으며 PostgreSQL에 연결할 때 사용자 이름과 암호 지정만 지원합니다. 앞의 다이어그램에 표시된 것처럼 Microsoft Entra 토큰이 암호로 전달됩니다.

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

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

Microsoft Entra ID로 인증

다음 절차를 사용하여 Microsoft Entra ID에서 Azure Database for PostgreSQL 유연한 서버 사용자로 인증합니다. Azure Cloud Shell, Azure Virtual Machines 또는 로컬 컴퓨터에서 따라 할 수 있습니다.

사용자의 Azure 구독에 로그인

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

az login

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

Microsoft Entra 액세스 토큰 검색

Azure CLI를 사용하여 Microsoft Entra 인증 사용자가 Azure Database for PostgreSQL에 액세스할 수 있도록 액세스 토큰을 획득합니다. 퍼블릭 클라우드의 예는 다음과 같습니다.

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

위의 리소스 값은 표시된 대로 지정해야 합니다. 다른 클라우드의 경우 다음 명령을 사용하여 리소스 값을 조회할 수 있습니다.

az cloud show

Azure CLI 버전 2.0.71 이상의 경우 모든 클라우드에 대해 다음과 같은 편리한 버전으로 명령을 지정할 수 있습니다.

az account get-access-token --resource-type oss-rdbms

인증이 성공하면 Microsoft Entra ID는 액세스 토큰을 반환합니다.

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

토큰은 Base64 문자열입니다. 인증된 사용자에 대한 모든 정보를 인코딩하고 Azure Database for PostgreSQL 서비스를 대상으로 합니다.

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

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

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

다음은 Windows의 예입니다.

set PGPASSWORD=<copy/pasted TOKEN value from step 2>
$env:PGPASSWORD='<copy/pasted TOKEN value from step 2>'

다음은 Linux/macOS 예입니다.

export PGPASSWORD=<copy/pasted TOKEN value from step 2>

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

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

이제 평소처럼 Azure Database for PostgreSQL과의 연결을 시작할 수 있습니다.

psql "host=mydb.postgres... user=user@tenant.onmicrosoft.com dbname=postgres sslmode=require"

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

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

  1. Pgadmin을 열고 왼쪽 메뉴에서 등록을 클릭하고 서버를 선택합니다.
  2. 일반 탭에서 연결 이름을 제공하고 지금 연결 옵션을 선택 취소합니다.
  3. 연결 탭을 클릭하고 호스트 이름/주소사용자 이름에 대한 Azure Database for PostgreSQL 유연한 서버 인스턴스 세부 정보를 제공하고 저장합니다. 사용자 이름은 Microsoft Entra ID 또는 전자 메일입니다.
  4. 브라우저 메뉴에서 Azure Database for PostgreSQL 유연한 서버 연결을 선택하고 서버 연결을 클릭합니다.
  5. 메시지가 표시되면 Active Directory 토큰 암호를 입력합니다.

PG 관리자를 사용한 로그인 프로세스를 보여 주는 스크린샷

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

  • user@tenant.onmicrosoft.com 는 Microsoft Entra 사용자의 userPrincipalName입니다.
  • Azure 사용자의 철자를 정확하게 사용해야 합니다. Microsoft Entra 사용자 및 그룹 이름은 대/소문자를 구분합니다.
  • 이름에 공백이 포함된 경우 각 공백 앞에 백슬래시(\)를 사용하여 이스케이프합니다. Azure CLI를 사용하여 로그인한 사용자를 가져오고 PGUGSER 환경 변수에 대한 값을 설정할 수 있습니다.
    export PGUSER=$(az ad signed-in-user show --query "[userPrincipalName]" -o tsv | sed 's/ /\\ /g')
    
  • 액세스 토큰의 유효기간은 5분~60분입니다. Azure Database for PostgreSQL에 대한 로그인을 시작하기 전에 액세스 토큰을 가져와야 합니다.

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

Microsoft Entra ID로 그룹 멤버로 인증

Azure Database for PostgreSQL 유연한 서버에서 Microsoft Entra 그룹 만들기

Microsoft Entra 그룹이 데이터베이스에 액세스할 수 있도록 하려면 사용자에 대해 사용한 것과 동일한 메커니즘을 사용하되 대신 그룹 이름을 지정합니다. 예시:

select * from  pgaadauth_create_principal('Prod DB Readonly', false, false).

그룹 멤버는 로그인할 때 액세스 토큰을 사용하지만 그룹 이름을 사용자 이름으로 지정합니다.

참고 항목

Azure Database for PostgreSQL 유연한 서버는 관리 ID 및 서비스 주체를 그룹 멤버로 지원합니다.

사용자의 Azure 구독에 로그인

Azure CLI를 사용하여 Microsoft Entra ID로 인증을 받습니다. Azure Cloud Shell에서는 이 단계가 필요하지 않습니다. 사용자는 Microsoft Entra 그룹의 멤버여야 합니다.

az login

Microsoft Entra 액세스 토큰 검색

Azure CLI를 사용하여 Microsoft Entra 인증 사용자가 Azure Database for PostgreSQL에 액세스할 수 있도록 액세스 토큰을 획득합니다. 퍼블릭 클라우드의 예는 다음과 같습니다.

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

표시된 대로 정확하게 초기 리소스 값을 지정해야 합니다. 다른 클라우드의 경우 다음 명령을 사용하여 리소스 값을 조회할 수 있습니다.

az cloud show

Azure CLI 버전 2.0.71 이상의 경우 모든 클라우드에 대해 다음과 같은 편리한 버전으로 명령을 지정할 수 있습니다.

az account get-access-token --resource-type oss-rdbms

인증이 성공하면 Microsoft Entra ID는 액세스 토큰을 반환합니다.

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

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

다음 고려 사항은 그룹 멤버로 연결할 때 필수적입니다.

  • 그룹 이름은 연결하려는 Microsoft Entra 그룹의 이름입니다.
  • Microsoft Entra 그룹 이름의 철자를 정확하게 입력했는지 확인합니다. Microsoft Entra 사용자 및 그룹 이름은 대/소문자를 구분합니다.
  • 그룹으로 연결하는 경우 그룹 멤버의 별칭이 아닌 그룹 이름만 사용합니다.
  • 이름에 공백이 포함된 경우 각 공백 앞에 백슬래시(\)를 사용하여 이스케이프합니다.
  • 액세스 토큰의 유효기간은 5분~60분입니다. Azure Database for PostgreSQL에 로그인하기 직전에 액세스 토큰을 가져오는 것이 좋습니다.

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

다음 단계