Snowflake Postgresの SSL 証明書¶
Snowflake Postgresはクラスターへの安全な SSL 接続で実行されます。クライアントとアプリケーションをクラスターに接続する場合、SSLMODE=require を設定に含めるか、非 libpq ベースのドライバーの同等の設定を含めます。詳細および接続のトラブルシューティングのヒントについては、Snowflake Postgresへの接続 をご参照ください。
セキュリティ層を追加するために、管理者とインスタンス所有者は、各Snowflake Postgresサーバーの証明書の署名に使用されるルート CA(認証機関)のパブリック証明書と秘密キーペアのうち、パブリック証明書部分を取得できます。これらのルート CA 証明書(および共有されない秘密キー)は、各Snowflakeアカウントに固有です。取得したルート CA 証明書は、中間者(MITM)攻撃から保護するための、接続時に提示されるサーバー証明書の追加検証に使用できます。
SSL パブリックルート証明書を取得する¶
ナビゲーションメニューで Postgres を選択します。
右上の More Options [⋮] メニューで Download Certificate を選択します。
確認ダイアログで Download を選択します。
DESCRIBE POSTGRES INSTANCE コマンドによって返される certificate フィールドからルート CA 証明書を取得できます。この証明書は、特定アカウントのすべてのインスタンスで同じです。
DESCRIBE POSTGRES INSTANCE my_postgres
->> SELECT "property", "value"
FROM $1
WHERE "property" = 'certificate';
SSL 証明書検証用のPostgresクライアントを構成する¶
"-----BEGIN CERTIFICATE-----"および"-----END CERTIFICATE-----"の行を含むルート CA 証明書テキストを、クライアントホストの安全な場所にあるファイルに配置します。再利用したいコンテンツを含むルート CA ファイルが既にある場合は、Snowflake Postgresのルート CA 証明書テキストを追加できます。
接続構成で以下を行います。
注釈
接続を行うクライアントシステムユーザーの場合、``sslrootcert``のデフォルト値は``$HOME/.postgresql/root.crt``です。ルートCA証明書をその場所に配置する場合は、接続に``sslrootcert``パラメーターを指定する必要はありません。
これら2つの``sslmode``値は次のように機能します。
verify-ca:現在のルートCAパブリック証明書を使用して、ルートCA証明書ペアによって署名されていることを確認することで、サーバーが信頼できることを検証します。
verify-full: ``verify-ca``検証を実行し、さらにサーバーホスト名がサーバー証明書に保存されている名前と一致することを確認します。Snowflakeでは、これにより、アカウントのルートCAで署名されたすべての署名済みサーバー証明書で機能することが保証されます。
指定された``sslmode``パラメーターに従ってサーバー証明書を検証できない場合、SSL接続は失敗します。セキュリティが重視されるほとんどの環境では、``verify-full``が推奨されます。
警告
ルートCA証明書が存在する場合、``sslmode=require``は``sslmode=verify-ca``と同じ検証を実行します。別のCAによって署名された証明書を使用しているサーバーで、``$HOME/.postgresql/root.crt``のルートCA証明書があると、SSL接続エラーになることがよくあります。このような場合は、そのファイルにSnowflakeのルートCA証明書のテキストを追加するか、接続の``sslrootcert``パラメーターで指定された別の場所に配置することができます。
注釈
これらの異なる``sslmode``設定レベルにより、MITM攻撃をどのように防げるかについて詳しくは、`異なるsslmode設定で提供される保護<https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-PROTECTION>`_に関するPostgreSQLの章を参照してください。