|
Pervasive PSQL のセキュリティ オプションを使用すると、特定のユーザーに対し、データ列の操作を制限することができます。これらの制限は、ユーザーがテーブルの特定の列しか見えないようにすることから、すべての列を見ることができるが更新できないようにすることまで、さまざまな範囲で行うことができます。Pervasive PSQL は、データベース許可について、オペレーティング システムのファイルおよびディレクトリ権限を想定しません。デフォルトで、Pervasive PSQL を使用してデータベースにアクセスするすべてのユーザーは、データに読み書きする完全なアクセス権を持ちます。このアクセスを制限し、Pervasive PSQL を使用してデータベースを不当な更新またはアクセスから保護するために、データベース セキュリティを有効にし、定義する必要があります
Pervasive PSQL のセキュリティ ステートメントにより、データベースへのアクセスを制限する次の動作を行うことができます。
表 47 は、ユーザーおよびユーザー グループに付与することができる権限を示しています。
あるタイプのアクセス権を、データベース全体または特定のデータベース要素に割り当てることができます。たとえば、Update 権をユーザーまたはユーザー グループに割り当てた場合、これを一定のテーブルまたはテーブル内の列に制限することができます。それに反して、Create Table 権をユーザーまたはユーザー グループに割り当てた場合、そのユーザーまたはユーザー グループはデータベース全体に Create Table 権を持ちます。単一のテーブルまたは列に対して Create Table 権を適用することはできません。
Create Table と Login 権はデータベース全体に適用される一方、そのほかのアクセス権はすべてテーブルに適用されます。さらに、Select および Update 権をテーブル内の個々の列に適用することができます。
次の 9 つの手順はデータベースのセキュリティを確立する一般的な方法を表します。
セキュリティを有効にするには SET SECURITY ステートメントを使用できます。それに応え、Pervasive PSQL はマスター ユーザーを作成します。マスター ユーザーはデータベースに対し完全な読み書きのアクセス権を持ちます。SET SECURITY ステートメントで指定したパスワードはデータベースのマスター パスワードになります。
次の例はデータベースのセキュリティを有効にし、マスター ユーザーのパスワードに Secure を指定します。
パスワードでは大文字小文字が区別されます。
セキュリティを有効にすると、Pervasive PSQL は X$User と X$Rights というシステム テーブルを作成します。セキュリティを有効にすると、マスター ユーザーを除くすべてのユーザーは、明示的にほかのユーザーを作成してログイン権を与えない限り、データベースにアクセスできません。
セキュリティを有効にした後、データベースは 1 人のユーザー(Master)と 1 つのユーザー グループ(PUBLIC)を持ちます。ほかのユーザーにデータベースへのアクセスを提供するには、マスター ユーザーとしてデータベースにログインし、名前とパスワードを使用してユーザーを作成します。またユーザーをユーザー グループに組織することもできます。
Pervasive PSQL はユーザー名の大文字小文字を区別します。したがって、マスター ユーザーとしてログインする場合、ユーザー名を Master と指定する必要があります。
セキュリティ管理を単純化するために、ユーザーをユーザー グループに組織することができます。システムで必要な数のユーザー グループを作成することができます。ただし、1 人のユーザーは、PUBLIC に加えて 1 つのグループにしか所属できません。ユーザーは、いったん追加されたグループに所属すると、グループのアクセス権を継承します。そのユーザーに個別のアクセス権を与えることはできません。グループ内のユーザーのアクセス権は、グループ全体に定義されたアクセス権と異なるものにすることはできません。ユーザーに固有のアクセス権を与えるには、そのユーザーのためだけの特別なグループを作成します。
ユーザー グループを作成するには、CREATE GROUP ステートメントを使用します。
一度に複数のユーザー グループを作成することもできます。
ユーザー グループ名は大文字と小文字を区別し、30 文字以内で、データベースに対して一意である必要があります。ユーザー グループ名を付ける規則の詳細については、『SQL Engine Reference』を参照してください。
データベースにユーザーを作成するとき、Pervasive PSQL は、対応するユーザー名とパスワードをデータベースのセキュリティ テーブルに記録します。ユーザーを作成するには GRANT LOGIN TO ステートメントを使用します。次の例は、ユーザー Cathy を作成し、パスワードとして Passwd を割り当てます。
メモ
Pervasive PSQL はパスワードを暗号化形式で格納します。したがって、X$User テーブルに照会してユーザーのパスワードを表示することはできません。
ユーザー作成時にユーザーをユーザー グループに割り当てることもできます。たとえば、ユーザー Cathy を Accounting グループに割り当てるには次のステートメントを使用します。
ユーザー名とパスワードは大文字と小文字を区別します。ユーザー名とパスワードに対して許容される長さと文字については、『Advanced Operations Guide』の「識別子の種類別の制限」を参照してください。
このセクションでは、ユーザー グループと個々のユーザーにアクセス権を与える方法を説明します。
すべてのユーザーは自動的に PUBLIC グループに所属します。PUBLIC グループは特別なユーザー グループで、特定のデータベースのすべてのユーザーの最低限のアクセス権のセットを定義するのに使用します。PUBLIC グループに割り当てられたユーザーより少ないアクセス権を持つユーザーはいません。PUBLIC グループからユーザーを削除することはできません。PUBLIC グループに与えられているアクセス権をユーザーから取り消すことはできません。
デフォルトで、PUBLIC グループにはアクセス権が何もありません。PUBLIC グループのアクセス権を変更するには、GRANT(アクセス権)ステートメントを使用します。たとえば、次のステートメントはサンプル データベースのすべてのユーザーに、データベース内の Department、Course、Class テーブルを照会することを許可します。
PUBLIC グループにアクセス権を与えたら、別のグループを作成してより高いレベルのアクセス権を定義することができます。ユーザーをグループに所属させないことによって、個々のユーザーに、ほかのユーザーまたはユーザー グループとは異なるアクセス権を追加することもできます。
ユーザー グループにアクセス権を割り当て、そのグループにユーザー名とパスワードを追加することができます。こうすると、各ユーザーのアクセス権を個々に割り当てる手間を省くことができます。また、グループにセキュリティ権を割り当てた場合、セキュリティ管理はより簡単になります。グループ全体に 1 度に新しいアクセス権を与えたり既存のアクセス権を取り消したりすることにより、多数のユーザーのアクセス権を変更することができるからです。
ユーザー グループにアクセス権を与えるには、GRANT(アクセス権)ステートメントを使用します。たとえば、次のステートメントは、Accounting グループのすべてのユーザーが、サンプル データベースの Billing テーブルの定義を変更することを許可します。
メモ
Alter 権を与えることは、Select、Update、Insert、Delete 権を暗黙的に与えることを忘れないでください。
ユーザーを作成すると、そのユーザーはデータベースにログインできます。ただし、そのユーザーは、アクセス権を持つユーザー グループに所属させるか、そのユーザーにアクセス権を与えるかのいずれかをしなければ、データにアクセスすることはできません。
ユーザーにアクセス権を与えるには、GRANT(アクセス権)ステートメントを使用します。次の例は、ユーザー John に、サンプル データベースの Billing テーブルに行を挿入することを許可します。
メモ
Insert 権を与えることは、Select、Update、Delete 権を暗黙的に与えることになります。
ユーザーを削除するには、REVOKE LOGIN ステートメントを使用します。
このステートメントは、データ辞書からユーザー Bill を削除します。ユーザーを削除すると、データベースのセキュリティを無効にしない限り、そのユーザーはデータベースにアクセスできません。
次の例のように、複数のユーザーを一度に削除することもできます。
ユーザー グループを削除するには、次の手順に従います。
ユーザーのアクセス権を取り消すには、REVOKE ステートメントを使用します。次の例は、サンプル データベースの Billing テーブルから、ユーザー Ron の Select 権を取り消します。
データベースのセキュリティを無効にするには、次の手順を行います。
データベースのセキュリティを無効にすると、Pervasive PSQL はデータベースからシステム テーブルの X$User と X$Rights を削除し、関連する DDF ファイルも削除します。
メモ
USER.DDF と RIGHTS.DDF データ辞書ファイルを単純に削除するだけではセキュリティを無効にすることはできません。これらを削除してデータベースにアクセスを試みると、Pervasive PSQL はエラーを返してデータベースへのアクセスを拒否します。
データベース セキュリティを設定すると、Pervasive PSQL はシステム テーブル X$User と X$Rights を作成します。システム テーブルはデータベースの一部であるため、適切なアクセス権があれば、それらにクエリを実行できます。
各システム テーブルの内容をすべて参照する場合は、『SQL Engine Reference』のシステム テーブルを参照してください。
|