このページは、以下の英語ページの抄訳です。最新の情報については、英語ページを参照してください。
SQL Anywhere 17 では、セキュリティをより強化するためにパスワードの管理や、様々なツール、ユーティリティからのアクセスに関連する変更が複数実装されました。
それらの変更について、以下に簡単に説明します。
システムテーブルのパスワードハッシュへのダイレクトアクセス
データベースセキュリティのベストプラクティスとして、データベース内のパスワードハッシュ値へのアクセスには2種の異なるアクター --- 管理者(SELECT ANY TABLE 権限を持つユーザー)とセキュリティオフィサー(ACCESS USER PASSWORD 管理権限を持つユーザー)--- が必要です。
version 17 では、データベース内に格納されるパスワードの保護を強化するため、サーバーは、クエリー内のパスワードのハッシュは返さなくなりました。下のビューでは、パスワードが含まれるカラムは、どのユーザーのものも「***」 に置き換えられています。
- SYSUSER
- SYSUSERPERM
- SYSUSERAUTH
- SYSEXTERNLOGIN
- SYSLDAPSERVER
- SYSSYNC2
また、下のシンクロナイゼーションが関連するビューは、ISYSSYNC テーブルではなく、SYSSYNC2 ビューから選択します。その結果「‘***」で置き換えられる機密的なカラムが存在します。
- SYSSYNCS
- SYSSYNCUSERS
- SYSSYNCPUBLICATIONDEFAULTS
- SYSSYNCSUBSCRIPTIONS
- SYSSYNCPROFILE
version 17 では、データベース内に格納されている実際のパスワードハッシュとパスワード値へのアクセスには、2つの権限が必要になります。SELECT ANY TABLE 権限と新しい ACCESS USER PASSWORD 権限です。「ACCESS USER PASSWORD」権限は、パスワードハッシュを含むビュー(下のリスト参照)へのアクセスを一人のユーザーに対して許可し、データベースの比較、アンロード、抽出などのパスワードへのアクセスを含むオペレーションの実行を許可します。
機密的な情報やパスワードをレポートする下のビューへアクセスするには、SELECT ANY TABLE にともなう ACCESS USER PASSWORD の権限が必要です。
- SYSSYNC
- SYSSYNCPROFILE
- SYSUSERPASSWORD
- SYSLDAPSERVERPASSWORD
- SYSEXTERNUSERPASSWORD
これらの変更の結果、ユーザーのコピー/ペースト オプション、外部ログイン、LDAP サーバーとシンクロナイゼーションの定義オプションなどと同様にに、Sybase Central のスキーマ diff utility に動作変更があることに気づかれるかもしれません。
DBUnload/DBXTRACT の変更
また、デフォルトでは、DBUnload または DBXtract ではパスワードはアンロードされなくなりました。
DBUnload は、同じ(またはほんの少し変更した)スキーマとデータでデータベースを再作成する目的で、結果をデータベースにリロードしなければならない場合にのみ、パスワードハッシュのアンロードを試みます。
パスワードなしでデータベースがアンロードされた場合には、GRANT CONNECT、CREATE EXTERNLOGIN、CREATE LDAP SERVER のステートメント文には、指定された IDENTIFIED BY 句を持ちません。デフォルトDB ユーザーの GRANT CONNECT 文が、(デフォルトパスワードで)追加されます。
DBUnload と DBXtract ユーティリティは、–up オプションが指定された場合に、パスワードをアンロードします。そして、アンロード/抽出を実行しているユーザーは、適切な権限を持ちます(下参照)。
リロードオプション (-ac, -an, -aob, etc…) のいずれかを使用する場合には、-up オプションが示唆されます。
DBUNLOAD と –no オプション (データベーススキーマ比較を実行する場合に使用される) は、パスワードを含むパスワードハッシュと値をアンロードすることは決してありません。
アンロードと新しいデータベース (-an, -ao, -aob) へのリロードには、SELECT ANY TABLE, SERVER OPERATOR、そして ACCESS USER PASSWORD システム権限が必要になります。アンロードと既存のデータベース (-ac) へのリロードには、SERVER OPERATOR システム権限は必要ありません。再構築を実行しているユーザーのみ、 SELECT ANY TABLE と ACCESS USER PASSWORD の両方をその再構築プロセスの間のみ一時的に与えることをお奨めします。コンパチビリティDBA ユーザーは、上のオペレーションに必要なロールを全て持っていることに注意してください。
EncryptedPassword 接続パラメーターの改善
セキュリティの観点では、DSN 定義 (または、クライアントコンピューターのどこにも) の一部としてパスワードを決して保存しないことがベストプラクティスですが、多くのデベロッパーはアプリケーションの配布と管理を容易にするため、ベストプラクティスにはしたがっていないようです。
これに対し、SQL Anywhere では、(例えばDSN定義内の)ローカルマシン上のプレーンテキストパスワードをユーザーが見てしまわないように、パスワード(PWD)接続パスワードの代替として使用することができる EncryptedPassword (ENP: 暗号化したパスワード) 接続パラメーターを提供しています。
ENP 接続パラメーターの目的は、データベースの認証に使用されている実際のパスワードをカモフラージュすることです。しかしながら、version 17より前のバージョンでは、暗号化されたパスワードは悪用される可能性がありました。例えば、難読化されていて少しの努力で解読される可能性があるなど。さらに、ODBC administrator を使用して、暗号化されたパスワードをプレーンテキストのパスワードにコンバートすることも可能でした。
備考: version 17 の新機能として説明していますが、ここで説明している encryptedpassword の変更は、 実際は version 16 build 2039 以降から利用可能です。
version 17 では、暗号化されたパスワードのサポートが強化されており、データベース管理者は、プレーンテキストのパスワードをユーザーに教えなくとも、データベースのアクセスを特定のコンピューターの一人のユーザーに制限することができます。さらに、現在のパスワードがメモリーに復号化され調査されることになるのを防ぐことができます。
復号化の成功を特定のコンピューターまたはコンピューターとユーザーの組み合わせに制限することが可能なため、プレーンテキスト内の暗号化されたパスワードを表示すること自体は、それほど問題ではありません。
例えば、下の接続文字列では、暗号化されたパスワード (ENP=) は、特定のコンピューターとユーザーの組み合わせ以外では誰も使用することができません。
dbping -d -c "Host=server-pc;Server=DemoServer;UID=DBA;ENP=05a17731bca92f97002100c39d906b70f3272fe76ad19c0e8bd452ad4f9ea9"
EncryptedPassword 接続パラメーターをよりセキュアにするために、以下の変更がされています。
- 暗号化されたパスワードが容易に復号化されないよう、より強固な暗号化アルゴリズムが使用されています。
- EncryptedPassword は、ある特定のコンピューター、またはある特定のコンピューターとユーザーの組み合わせに制限することが可能です。例えば、
- 暗号化されたパスワードは、特定のコンピューター上でしか復号化できず、他のどのコンピューターでも使用できない:しかしながら、そのコンピューターにログオンできる人は誰でも、データベースに対する認証にその暗号化されたパスワードとそのユーザーIDを使用することができます。
- その暗号化されたパスワードは特定のコンピューター上で特定のユーザーのみ復号化することができる:同じユーザーまたは別のユーザーでも、他のどのコンピューター上でも使用できません。
- プレーンテキストパスワードは、SQL Anywhere のODBC 設定ダイアログを使用して EncryptedPassword 値からリバースエンジニアリングできなくなりました。SQL Anywhere のODBC 設定 Encrypt パスワードオプションは、チェックボックスでなくなり、以下のように別の暗号化オプションから選択して使用します。
- なし
- どのコンピューターでも使用
- このコンピューターのみの使用
- このコンピューターとこのユーザーのみの使用
このダイアログは、以前非暗号化でなかったかぎり、既存のパスワードのパスワード暗号化レベルを変更する目的では使用できません。暗号化のレベルを変更しなければならない場合には、パスワードを再入力する必要があります。
DBDSN の変更
Data Source ユーティリティ (dbdsn) では、暗号化されたパスワードの使用方法を指定する新しいオプション -pet a|c|u をサポートしました。
- -pet a が指定されている場合には、そのパスワードはどのコンピューターでも使用できるよう暗号化されます。
- -pet c が指定されている場合には、そのパスワードはこのコンピューターでのみ使用できるよう暗号化されます。
- -pet u が指定されている場合には、そのパスワードはこのユーザーがこのコンピューターで使用するためのみに暗号化されます。このオプションは、クライアントアプリケーションが windows サービスとして実行されている場合には使用できません。クライアントアプリケーションがサービスとして実行されている場合には、-pet c オプションをかわりに使用してください。
- 以前からある、単純な難読化を提供する -pe オプションは、継続してサポートされますが、これは廃止される方向です。
-pet c と -pet u オプションの暗号化は、使用する(復号化する)予定のコンピューターまたはコンピューター/ユーザー上で実行する必要があります。DSN 定義を他のマシンにエクスポートしてEncryptedPassword の使用を継続することはできません。
備考: 新しい暗号化されたパスワードの機能は、17.0.0.1272 と 16.0.0.TBDより前のバージョンのクライアントライブラリではサポートされていません。
DBFHide の変更
接続文字列(例:dbping -d -c @credentials.hidden)を認める多くのデータベースツールで使用するために、File Hiding ユーティリティ dbfhide ツールをファイルへの全接続文字列を暗号化するために使用することが可能です。version 17 では、新しいオプションである -wm (コンピューターのみ) と -w (コンピューターとユーザーのみ) をサポートしました。
======================
ご購入に関するお問い合わせ
こちらよりお問い合わせください。