Azure Database for PostgreSQL 플렉서블 서버의 SCRAM 인증

SCRAM(Salted Challenge Response Authentication Mechanism)은 암호 기반 상호 인증 프로토콜입니다. 여러 수준의 보안을 추가하고 신뢰할 수 없는 연결에서 암호 검색을 방지하는 챌린지-응답 체계입니다. SCRAM은 고급 보안을 제공하는 암호화된 해시 형식으로 서버에 암호를 저장할 수 있습니다.

비고

SCRAM 인증 방법을 사용하여 Azure Database for PostgreSQL 유연한 서버에 액세스하려면 클라이언트 라이브러리에서 SCRAM을 지원해야 합니다. 자세한 내용은 SCRAM을 지원하는 드라이버 목록을 참조하세요.

SCRAM 인증은 애플리케이션 서버에 추가 계산 부하를 추가하므로 각 인증에 대한 클라이언트 증명을 계산해야 합니다. 애플리케이션의 연결 풀에 있는 연결 수를 제한하거나(애플리케이션의 수다를 줄임) 클라이언트에서 허용하는 동시 트랜잭션의 수를 제한하여 SCRAM에서 발생하는 성능 오버헤드를 줄일 수 있습니다(더 큰 트랜잭션). SCRAM 인증으로 마이그레이션하기 전에 워크로드를 테스트합니다.

SCRAM 인증 구성

매개 변수로 이동

SCRAM 인증을 구성하려면 Azure 포털의 매개 변수 페이지에 액세스합니다.

  1. Azure Portal에 로그인합니다.
  2. Azure Database for PostgreSQL 유연한 서버로 이동합니다.
  3. 설정의 왼쪽 메뉴에서 매개 변수를 선택합니다.
  4. 검색 상자를 사용하여 다음 단계에서 언급된 매개 변수를 찾습니다.

구성 단계

  1. password_encryptionSCRAM-SHA-256로 변경합니다. 현재 Azure Database for PostgreSQL SHA-256을 사용하는 SCRAM만 지원합니다.

    SCRAM에 대한 암호화 페이지의 스크린샷.

  2. SCRAM-SHA-256를 인증 방법으로 허용합니다.

    SCRAM에서 도달한 인증의 스크린샷.

    중요합니다

    SCRAM-SHA-256 메서드만 선택하여 SCRAM 인증만 강제할 수 있습니다. 이 방법을 적용하면 MD5 인증을 사용하는 사용자가 서버에 연결할 수 없습니다. SCRAM을 적용하기 전에 모든 사용자 암호를 SCRAM-SHA-256로 업데이트할 때까지 MD5와 SCRAM-SHA-256가 모두 인증 방법으로 설정되어 있는지 확인하세요. 7단계에서 언급한 쿼리를 사용하여 사용자에 대한 인증 유형을 확인할 수 있습니다.

  3. 변경 내용을 저장합니다. 이러한 속성은 동적이며 서버를 다시 시작할 필요가 없습니다.

  4. Azure Database for PostgreSQL 유연한 서버 클라이언트를 사용하여 Azure Database for PostgreSQL 유연한 서버에 연결합니다. 예를 들면 다음과 같습니다.

    psql "host=myPGServer.postgres.database.azure.com port=5432 dbname=postgres user=myDemoUser password=<password> sslmode=require"
    
    psql (12.3 (Ubuntu 12.3-1.pgdg18.04+1), server 12.6)
    SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
    Type "help" for help.
    
  5. 암호 암호화를 확인합니다.

    postgres=> show password_encryption;
       password_encryption
    ---------------------
    scram-sha-256
    (1 row)
    
  6. 사용자의 암호를 업데이트합니다.

    postgres=> \password myDemoUser
    Enter new password:
    Enter it again:
    postgres=>
    
  7. 함수를 사용하여 사용자 인증 유형을 확인합니다 azure_roles_authtype() .

    postgres=> SELECT * from azure_roles_authtype();
             rolename          | authtype
    ---------------------------+-----------
    azuresu                   | NOLOGIN
    pg_monitor                | NOLOGIN
    pg_read_all_settings      | NOLOGIN
    pg_read_all_stats         | NOLOGIN
    pg_stat_scan_tables       | NOLOGIN
    pg_read_server_files      | NOLOGIN
    pg_write_server_files     | NOLOGIN
    pg_execute_server_program | NOLOGIN
    pg_signal_backend         | NOLOGIN
    replication               | NOLOGIN
    myDemoUser                | SCRAM-256
    azure_pg_admin            | NOLOGIN
    srtest                    | SCRAM-256
    sr_md5                    | MD5
    (14 rows)
    
  8. SCRAM 인증을 지원하는 클라이언트에서 서버에 연결합니다.

    SCRAM 인증은 기본 제공 관리 형 PgBouncer에 연결된 경우에도 지원됩니다.