今回は、Silverの「S2 運用管理 - S2.3 設定ファイル」からの出題です。
local all all ident
host all all 127.0.0.1/32 ident
host foo bar 192.168.1.0/24 md5
host all bar 192.168.1.0/24 reject
host foo all 192.168.1.0/24 trust
IPアドレスが 192.168.1.11 のクライアントからこのデータベースに接続するときの記述について、選択肢の中から正しいものをすべて選びなさい。
ユーザ foo がデータベース bar にアクセスするときはパスワードを入力する必要がある
ユーザ bar がデータベース foo にアクセスするときはパスワードを入力する必要がある
ユーザ foo はデータベース foo にはアクセスできない
ユーザ bar はデータベース bar にはアクセスできない
ユーザ hoge はデータベース foo にパスワードなしでアクセスできる
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2012年4月18日
PostgreSQLのクライアント認証はデータベースクラスタのディレクトリにあるpg_hba.conf というファイルで管理されています。
各行は接続タイプ、接続先DB、ユーザ名、接続元ホスト、認証方法の5つのフィールドで構成されます。ただし、接続タイプが local の行には接続元ホストのフィールドがないため、フィールドは4つになります。
クライアント認証時は、接続先DB、ユーザ名、接続元ホストの組み合わせがマッチする行を上から順に探し、マッチする行があればその行にある認証方法を利用、マッチする行がなければ接続を拒否することになります。
例題のケースで、IPアドレスが 192.168.1.11(192.168.1.0/24のネットワーク)のクライアントからのアクセスについては、pg_hba.confの3行目以降がこれに該当します。これらは
(1) ユーザ bar がデータベース foo にアクセスする場合はパスワード認証
(2) ユーザ bar が任意のデータベースにアクセスする場合は接続拒否
(3) 任意のユーザがデータベース foo にアクセスする場合は、他の認証なしに接続許可
という優先順位になっており、それ以外のパターンについては、接続拒否となります。
選択肢について順に調べると、
Aは上の(1)~(3)のいずれにも該当しないので、接続拒否、
Bは(1)なので、パスワード認証((2)と(3)にも該当しますが(1)が優先します)、
Cは(3)なので、接続許可(パスワード不要)、
Dは(2)なので、接続拒否、
Eは(3)なので、接続許可(パスワード不要)、
となります。
従って、正解は B、D、E です。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.