ディスク・グループのOracle ASMファイル・アクセス制御の管理

Oracle ASMファイル・アクセス制御を使用すると、Oracle ASMディスク・グループの内容を未認可のOracle ASMクライアント(未認可のデータベースなど)による偶発的なアクセスから必要に応じて保護することができます。

Oracle ASMファイル・アクセス制御を設定するには、個別のオペレーティング・システム・グループを指定する必要があります。Oracle ASMファイル・アクセス制御は、ASMCMDコマンドおよびSQL文で管理できます。

この項の内容は次のとおりです。

関連項目:

Oracle ASMファイル・アクセス制御について

Oracle ASMファイル・アクセス制御は、ファイルへのアクセスをSYSDBAとして接続する特定のOracle ASMクライアントに制限します。

通常、Oracle ASMクライアントはデータベースで、データベース・インスタンス・ホームを所有するユーザーとして識別されます。Oracle ASMファイル・アクセス制御では、データベースの識別にこのユーザー名を使用します。Oracle ASMファイル・アクセス制御は、データベース所有者のオペレーティング・システム有効ユーザー識別番号に基づいてアクセスを制御します。たとえば、表3-2では、データベースはoracle1およびoracle2として識別されます。

Oracle ASMではファイル・アクセス制御を使用して、そのOracle ASMインスタンスでSYSDBAとして認証されているデータベースに追加の権限が付与されているかどうかを判断します。これらの追加権限には、特定のファイル、エイリアス、ユーザー・グループを修正および削除する機能が含まれます。

ユーザー・グループを設定して、Oracle ASMファイルに対する同じアクセス権限を共有するデータベースのリストを指定できます。ユーザー・グループは、データベースのリストで、SYSDBAとして認証されるデータベースはユーザー・グループを作成できます。ただし、グループの作成者のみが、グループを削除したり、そのメンバーシップ・リストを変更したりできます。

各Oracle ASMファイルには、所有者、グループおよびその他の3つの権限カテゴリがあります。各カテゴリは、権限なしか、読取り専用権限または読取り/書込み権限を持ちます。

ファイル所有者は通常そのファイルの作成者で、所有者、グループ、その他のカテゴリのいずれかのファイルに対する権限を割り当てることができます。所有者は、そのファイルに関連付けられたグループも変更できます。

ファイルを作成しても、グループはそのファイルに自動的に関連付けられません。Oracle ASMファイル・アクセス制御には、ユーザーのプライマリ・グループの概念がないため、asmcmd chgrpコマンドを使用して、グループを手動で設定する必要があります。

Oracle ASMファイル・アクセス制御を管理する場合、ディスク・グループ内のファイルの所有者(または予定されている所有者)であるデータベース・インスタンスにSYSDBAとして接続することをお薦めします。

ディスク・グループ内のファイルについてOracle ASMファイル・アクセス制御を設定するには、次の手順を実行します。

  1. 新しいまたは既存のディスク・グループを変更して、Oracle ASMファイル・アクセス制御のディスク・グループ属性を設定します。

    新規作成したディスク・グループの場合は、ディスク・グループにファイルを作成する前にディスク・グループ属性を設定する必要があります。

  2. ディスク・グループに存在するファイルには、Oracle ASMファイル・アクセス制御のディスク・グループ属性を設定する前に、その既存のファイルに対する権限および所有権を明示的に設定する必要があります。

    ファイルに対する所有権または権限を設定する前に、ユーザーが存在することを確認します。所有権または権限を設定する前に、ファイルを閉じる必要があります。

  3. 必要に応じて、Oracle ASMファイルに対する同じアクセス権限を共有するデータベース・ユーザーのグループであるユーザー・グループを作成できます。

関連項目:

Oracle ASMファイル・アクセス制御へのディスク・グループ属性の設定

Oracle ASMファイル・アクセス制御を管理するには、ACCESS_CONTROL.ENABLEDおよびACCESS_CONTROL.UMASKディスク・グループ属性を設定する必要があります。ALTER DISKGROUP SQL文でディスク・グループを変更して属性を設定するか、またはASMCMD setattrコマンドを使用して属性を設定できます。

ファイル・アクセス制御を既存のディスク・グループに対して設定した場合、作成済のファイルはすべてのユーザーからアクセス可能なままになります。これを避けるには、ALTER DISKGROUP SET PERMISSIONSQL文を実行するか、ASMCMD chmodコマンドを実行して権限を制限します。

Oracle ASMファイル・アクセス制御を有効にするには、COMPATIBLE.ASMおよびCOMPATIBLE.RDBMSディスク・グループ属性を11.2以上に設定する必要があります。

Oracle ASMファイル・アクセス制御を制御するディスク・グループ属性は次のとおりです。

  • ACCESS_CONTROL.ENABLED

    この属性により、Oracle ASMファイル・アクセス制御がディスク・グループに対して有効かどうかが決まります。

    値はtrueまたはfalseです。デフォルトは、falseです。

    属性がtrueに設定されている場合、Oracle ASMファイルへのアクセスはアクセス制御の対象となります。falseに設定した場合、すべてのユーザーがディスク・グループ内のすべてのファイルにアクセスできます。他のすべての操作は、この属性とは関係なく動作します。

  • ACCESS_CONTROL.UMASK

    この属性により、Oracle ASMファイルの作成時に、ファイルの所有者であるユーザー、同じユーザー・グループのユーザー、およびユーザー・グループに属さない他のユーザーに対して、どの権限をマスクするかが決まります。この属性は、ディスク・グループ内のすべてのファイルに適用されます。

    値は3桁の数字{0|2|6} {0|2|6} {0|2|6}の組合せです。デフォルトは066です。

    0に設定すると、何もマスクされません。2に設定すると、書込み権限がマスクされます。6に設定すると、読取り権限と書込み権限の両方がマスクされます。

    ACCESS_CONTROL.UMASKディスク・グループ属性を設定する前に、ACCESS_CONTROL.ENABLED属性をtrueに設定してOracle ASMファイル・アクセス制御を有効にしておく必要があります。

例4-11に、SQL*Plusを使用してディスク・グループに対するOracle ASMファイル・アクセス制御を有効にする方法を示します。この例では、umask権限設定は026で、これにより、所有者には読取り/書込みアクセス(0を使用して何もマスクしない)、グループのユーザーには読取りアクセス(2を使用して書込み権限をマスク)が有効になり、グループに属さない他のユーザーにはアクセスが許可されません(6を使用してすべてのアクセスをマスク)。

例4-11 Oracle ASMファイル・アクセス制御の設定

ALTER DISKGROUP data1 SET ATTRIBUTE 'access_control.enabled' = 'true';
ALTER DISKGROUP data1 SET ATTRIBUTE 'access_control.umask' = '026';

関連項目:

SQL文を使用したOracle ASMファイル・アクセス制御の管理

ALTER DISKGROUP SQL文を使用して、Oracle ASMディスク・グループのファイル・アクセス制御を管理できます。これらのSQL文は、データベース・インスタンスとOracle ASMインスタンスの両方で使用可能です。

SQL*Plusでユーザーを管理する場合、ユーザーは既存のオペレーティング・システム・ユーザーで、そのユーザー名には対応するオペレーティング・システム・ユーザーIDが含まれている必要があります。ただし、Oracle ASMインスタンスと同じクラスタ内のユーザーのみを検証できます。

注意:

ファイルの所有権を変更する場合、ファイルの所有権の変更後でも、ファイルが開いている間は、ファイルの前の所有者を削除できません。

ディスク・グループ・アクセス制御をサポートするSQL文は、次のとおりです。

  • ALTER DISKGROUP ADD USERGROUP WITH MEMBER

    Oracle ASMユーザー・グループをディスク・グループに追加します。ユーザー・グループ名は、最大30文字に制限されています。MEMBER句に指定されるデータベースのオペレーティング・システム・ユーザーは、V$ASM_USERに表示されるように、そのディスク・グループに属している必要があり、そうでなければエラーが戻されます。SYSASMまたはSYSDBAとして認証されたユーザーならば誰でも、新しいユーザー・グループを作成できます。次に例を示します。

    SQL> SELECT group_number, os_name FROM V$ASM_USER;
    
    GROUP_NUMBER OS_NAME
    ------------ ----------------------------------------------------------------
               1 oracle1
               1 oracle2
    ...
    
    SQL> ALTER DISKGROUP data ADD USERGROUP 'test_grp1' 
         WITH MEMBER 'oracle1','oracle2';
    
  • ALTER DISKGROUP DROP USERGROUP

    Oracle ASMユーザー・グループをディスク・グループから削除します。グループを削除すると、有効なグループのないファイルがいくつか残る可能性があります。これらのファイルに有効なグループを持たせるには、ファイルに関連付けられたグループを有効なグループに手動で更新する必要があります。

    SQL> ALTER DISKGROUP data DROP USERGROUP 'test_grp1';
    
  • ALTER DISKGROUP MODIFY USERGROUP ADD MEMBER

    指定したユーザー・グループにユーザーを追加します。ユーザーは、V$ASM_USERに表示されるように、そのディスク・グループに属している必要があり、さもなければエラーが戻されます。グループの作成者またはOracle ASM管理者のみが、グループ・メンバーシップを変更できます。

    SQL> ALTER DISKGROUP data MODIFY USERGROUP 'test_grp2' ADD MEMBER 'oracle2';
    
  • ALTER DISKGROUP MODIFY USERGROUP DROP MEMBER

    指定したユーザー・グループからユーザーを削除します。メンバーがそのユーザー・グループに属していなければ、エラーが戻されます。グループの作成者またはOracle ASM管理者のみが、グループ・メンバーシップを変更できます。

    SQL> ALTER DISKGROUP data MODIFY USERGROUP 'test_grp2' DROP MEMBER 'oracle2';
    
  • ALTER DISKGROUP ADD USER

    オペレーティング・システム(OS)ユーザーをOracle ASMディスク・グループに追加し、これらのユーザーがディスク・グループに対するアクセス権限を持つことができるようにします。ユーザーが、V$ASM_USERに表示されるように、ディスク・グループに存在する場合、コマンドはエラーを記録し、他のユーザーがいればその追加を続行します。

    動作中のデータベース・インスタンスのオペレーティング・システム・ユーザーは、データベース・インスタンスがディスク・グループにアクセスしてファイルを作成すると、自動的にそのディスク・グループに追加されます。ただし、データベース・インスタンスがファイルを作成せずにディスク・グループ内のファイルを読み取るには、ADD USER句を使用してそのデータベースに関連付けられているオペレーティング・システム・ユーザーをディスク・グループに追加する必要があります。また、この句を使用すると、Oracle ASMファイル・アクセス制御のディスク・グループ属性を設定した直後から、ファイルを新規作成する前に、データベースに関連付けられているオペレーティング・システム・ユーザーを既存のディスク・グループに追加できます。

    SQL>  ALTER DISKGROUP data ADD USER 'oracle1';
    
  • ALTER DISKGROUP DROP USER

    オペレーティング・システム・ユーザーをOracle ASMディスク・グループから削除します。ユーザーがディスク・グループに存在しない場合、このコマンドはエラーを記録し、他にユーザーが存在すれば、削除を続行します。

    ユーザーが同じOracle ASMディスク・グループでファイルを所有している場合、CASCADEキーワードが指定されていないと、このコマンドはエラーにより失敗します。この場合、ユーザーは、所有するすべてのファイルとともに削除されます。

    ユーザーが所有するファイルが現在開いている場合、DROP USERコマンドは失敗し、ファイルは削除されません。

    SQL>  ALTER DISKGROUP data DROP USER 'oracle1';
    
  • ALTER DISKGROUP REPLACE USER

    オペレーティング・システム・ユーザーをOracle ASMディスク・グループ内の別のユーザーに置き換えます。置換ユーザーは、現在ディスク・グループのユーザー・リストにあるユーザーにしないでください。

    コマンドが成功すると、現在のユーザーが以前に所有していたすべてのファイルが、置換ユーザーによって所有されるようになります。現在のユーザーは、ディスク・グループのユーザー・リストから自動的に削除されます。現在のユーザーをディスク・グループに戻すことは可能ですが、このユーザーはどのファイルも所有しません。

    オープン・ファイルの所有者を変更すると、クラスタ内のすべてのインスタンスが再起動するまで、新しい所有者をその所有者のファイルで削除できません。

    Oracle ASM管理者のみがこのコマンドを実行できます。

    SQL> ALTER DISKGROUP data REPLACE USER 'oracle1' WITH 'oracle2';
    
  • ALTER DISKGROUP SET PERMISSION

    Oracle ASMファイルの権限を変更します。read write権限を持つファイルにread only権限を設定すると、write権限が取り消されます。ファイル所有者またはOracle ASM管理者のみが、ファイルの権限を変更できます。

    SQL> ALTER DISKGROUP data SET PERMISSION OWNER=read write, GROUP=read only,
         OTHER=none FOR FILE '+data/controlfile.f';
    
  • ALTER DISKGROUP SET OWNERSHIP

    ファイルの所有者またはグループを、指定したユーザー名またはユーザー・グループ名にそれぞれ変更します。指定したユーザー名またはユーザー・グループ名が存在しない場合、このコマンドはエラーにより失敗します。ファイルの所有者またはOracle ASM管理者のみがこのコマンドを実行でき、Oracle ASM管理者のみが所有者を変更できます。また、ユーザー・グループ名は存在する必要があり、ファイルの所有者はそのグループのメンバーであることが必要です。

    SQL> ALTER DISKGROUP data SET OWNERSHIP OWNER='oracle1', GROUP='test_grp1'
         FOR FILE '+data/controlfile.f';