Azure Database for PostgreSQL - フレキシブル サーバーでの SCRAM 認証

適用対象: Azure Database for PostgreSQL - フレキシブル サーバー

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

Note

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

Note

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

SCRAM 認証の構成

  1. password_encryption を SCRAM-SHA-256 に変更します。 現在、Azure Database for PostgreSQL フレキシブル サーバーでは、SHA-256 を使用する SCRAM のみがサポートされています。 SCRAM パスワード暗号化を有効にする

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

    重要

    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=MyPassword 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 認証をサポートするクライアントからサーバーに接続できます。

Note

組み込みのマネージド PgBouncer に接続されている場合、SCRAM 認証もサポートされます。 上のチュートリアルは、組み込みの PgBouncer 機能を使用して SCRAM 認証を使用する接続を設定するために有効です。

次のステップ