次の方法で共有


Azure Database for PostgreSQL での SCRAM 認証

Salted Challenge Response Authentication Mechanism (SCRAM) は、パスワードベースの相互認証プロトコルです。 これは、いくつかのレベルのセキュリティを追加し、信頼されていない接続でのパスワード スニッフィングを防ぐチャレンジ応答スキームです。 SCRAM は、暗号化ハッシュ形式でサーバーにパスワードを格納することをサポートしており、高度なセキュリティを提供します。

SCRAM 認証方法を使用して Azure Database for PostgreSQL フレキシブル サーバー インスタンスにアクセスするには、クライアント ライブラリで SCRAM をサポートする必要があります。 SCRAM をサポートする ドライバーの一覧 を参照してください。

SCRAM 認証では、アプリケーション サーバーに余分な計算負荷が課されるため、各認証のクライアント証明を計算する必要があります。 SCRAM によって生じるパフォーマンスオーバーヘッドは、アプリケーションの接続プール内の接続の数を制限するか (アプリケーション内のチャットを減らす)、またはクライアントが許可する同時トランザクションの数 (より大きなトランザクション) を制限することで軽減される可能性があります。 SCRAM 認証に移行する前に、ワークロードをテストすることをお勧めします。

SCRAM 認証の構成

  1. password_encryptionを SCRAM-SHA-256 に変更します。 現在、Azure Database for PostgreSQL では SHA-256 を使用した SCRAM のみがサポートされています。

    SCRAM の暗号化ページのスクリーンショット。

  2. 認証方法として SCRAM-SHA-256 を許可します。

    SCRAM によって到達した認証のスクリーンショット。

    Important

    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 に接続されている場合にもサポートされます。