Share via


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 기반 인증을 위한 사용자를 만들거나 사용하도록 설정할 수 있습니다. 해당 역할에 관리자 권한(예: CREATEDB)이 있으므로 일반 데이터베이스 작업에 Microsoft Entra 관리자를 사용하지 않는 것이 좋습니다.

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 설정을 통해 올바른 IP 주소에 대한 graph.microsoft.com 확인할 수 있는지 확인합니다.

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

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

PostgreSQL 및 Microsoft Entra 인증 방법을 사용하려는 경우 필요에 따라 로컬 PostgreSQL 관리자 계정을 추가할 수 있습니다.

참고 항목

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

Screenshot that shows selections for setting a Microsoft Entra admin during server provisioning.]

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

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

Screenshot that shows selections for setting a Microsoft Entra admin after server creation.

Important

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

Microsoft Entra ID를 사용하여 Azure Database for PostgreSQL에 커넥트

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

Diagram of authentication flow between Microsoft Entra ID, the user's computer, and the server.

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

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

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

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://server-name.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으로 로그인하기 위한 암호로 토큰 사용

Pg관리 Microsoft Entra 토큰을 사용하여 연결하려면 다음 단계를 수행합니다.

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

Screenshot that shows login process using PG admin.

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

  • 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://server-name.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 또는 Pg로 로그인하기 위한 암호로 토큰을 사용합니다관리

이러한 고려 사항은 그룹 구성원으로 연결할 때 필수적입니다.

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

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

다음 단계