Oracle Database User Management II ---許可と許可(ユーザーとロール)

                            Oracle Database User Management II ---許可と許可(ユーザーとロール)

この本の最後の時間を接続され、https://blog.csdn.net/alwaysbefine/article/details/112133204Oracleシステムは、非常にインストールし、その後のメンテナンス後、インストール、使用の観点から、複雑になっている。同様に、Oracleはユーザーのシステムを持っています。これらのユーザーをどのように認識して管理するかは、比較的基本的で重要な問題です。

1. Oracleデータベースシステムの組み込みユーザー構成

Oracleソフトウェアをインストールした直後に、オラクルはシステムにいくつかの組み込みユーザーとロールを提供します。これらのユーザーロールは基本ユーザー(ロール)と呼ぶことができます。SQLステートメントを使用して、ユーザー名でdba_usersから*を選択します。システムのすべてのユーザーは次のことができます。組み込みユーザーの数は、インストール時に選択したコンポーネントによって異なる場合がありますが(特別な検証はありませんが、そうする必要があります)、ほとんどのユーザーはロックされており、パスワードの有効期限が切れています。 scottユーザーはすぐに使用できるユーザーであり、sysログインでは通常、システム管理者IDであるsysdbaとしてIDを指定する必要があり、システムユーザーには独自のdbaロールがあり、scootユーザーは通常のユーザーです。ユーザーであり、通常はロックされています(他のユーザーとは異なり、ユーザーはロックされており、パスワードの有効期限が切れています。ユーザーはパスワードを持っておらず、ロックされた状態です)。つまり、インストールが完了した後、システムによって提供される使用可能なユーザーは、sys、system、およびscootの3つです。

 sysは強力で、Linuxシステムのrootユーザー、安全保障理事会の5人の常任理事国、およびOracleシステムの神に相当します。

システムの権限はsysより6少ないですが、dbaの役割を持っているため、強力であり、2番目のコマンド、神の代理、およびOracleシステムで唯一の2番目のボスに相当します。

Scootは、OracleのAlisonによって採用された最初のプログラマーの名前です。これは、Silentという名前のこのプログラマーを記念して設定された通常のユーザーであり、権限と役割はほとんどありません。

そのため、残りのユーザーはロックされたときにロックし、パスワードの有効期限が切れると期限切れになります。どちらも使用しません。ユーザーをカスタマイズし、カスタムユーザーの権限と役割を割り当てるだけです。したがって、sys、system、およびscootユーザーがパスワードを設定している場合は、それらを覚えておいてください。(通常、これらのユーザーのパスワードはインストール時に設定されます。これらのユーザーのパスワードを設定せずにOracleをインストールすることはできません:笑~~~)。

概要:Oracleシステムをインストールした後、システムの組み込みユーザーをよく見てください。多くはなく、11gには約30しかありません。それらのほとんどは、ロックの有効期限が切れた使用不可のユーザーです。SQLステートメントに注意してください。

select * from dba_users order by username;

2. Oracleデータベースシステムのすべての権限

すべてのアクセス許可を照会する:sysユーザーにログインし、SQLステートメントを実行します 。select* from session_privs order by PRIVILEGE;-他のユーザーは202のアクセス許可のみを検索でき、他のすべてのユーザーは202のアクセス許可を照会できます。出力は次のとおりです。アクセス許可は、システムアクセス許可とオブジェクトアクセス許可に分けることができます。(たとえば、select tableはオブジェクト権限です。オブジェクトは通常、テーブルやビューなどのオブジェクトを参照します。alteruser、create user、create roleなどの権限はシステム権限に分けられます)

ADMINISTER ANY SQL TUNING SET
ADMINISTER DATABASE TRIGGER
ADMINISTER RESOURCE MANAGER
ADMINISTER SQL MANAGEMENT OBJECT
ADMINISTER SQL TUNING SET
ADVISOR
ALTER ANY ASSEMBLY
ALTER ANY CLUSTER
ALTER ANY CUBE
ALTER ANY CUBE DIMENSION
ALTER ANY DIMENSION
ALTER ANY EDITION
ALTER ANY EVALUATION CONTEXT
ALTER ANY INDEX
ALTER ANY INDEXTYPE
ALTER ANY LIBRARY
ALTER ANY MATERIALIZED VIEW
ALTER ANY MINING MODEL
ALTER ANY OPERATOR
ALTER ANY OUTLINE
ALTER ANY PROCEDURE
ALTER ANY ROLE
ALTER ANY RULE
ALTER ANY RULE SET
ALTER ANY SEQUENCE
ALTER ANY SQL PROFILE
ALTER ANY TABLE
ALTER ANY TRIGGER
ALTER ANY TYPE
ALTER DATABASE
ALTER DATABASE LINK
ALTER PROFILE
ALTER PUBLIC DATABASE LINK
ALTER RESOURCE COST
ALTER ROLLBACK SEGMENT
ALTER SESSION
ALTER SYSTEM
ALTER TABLESPACE
ALTER USER
ANALYZE ANY
ANALYZE ANY DICTIONARY
AUDIT ANY
AUDIT SYSTEM
BACKUP ANY TABLE
BECOME USER
CHANGE NOTIFICATION
COMMENT ANY MINING MODEL
COMMENT ANY TABLE
CREATE ANY ASSEMBLY
CREATE ANY CLUSTER
CREATE ANY CONTEXT
CREATE ANY CUBE
CREATE ANY CUBE BUILD PROCESS
CREATE ANY CUBE DIMENSION
CREATE ANY DIMENSION
CREATE ANY DIRECTORY
CREATE ANY EDITION
CREATE ANY EVALUATION CONTEXT
CREATE ANY INDEX
CREATE ANY INDEXTYPE
CREATE ANY JOB
CREATE ANY LIBRARY
CREATE ANY MATERIALIZED VIEW
CREATE ANY MEASURE FOLDER
CREATE ANY MINING MODEL
CREATE ANY OPERATOR
CREATE ANY OUTLINE
CREATE ANY PROCEDURE
CREATE ANY RULE
CREATE ANY RULE SET
CREATE ANY SEQUENCE
CREATE ANY SQL PROFILE
CREATE ANY SYNONYM
CREATE ANY TABLE
CREATE ANY TRIGGER
CREATE ANY TYPE
CREATE ANY VIEW
CREATE ASSEMBLY
CREATE CLUSTER
CREATE CUBE
CREATE CUBE BUILD PROCESS
CREATE CUBE DIMENSION
CREATE DATABASE LINK
CREATE DIMENSION
CREATE EVALUATION CONTEXT
CREATE EXTERNAL JOB
CREATE INDEXTYPE
CREATE JOB
CREATE LIBRARY
CREATE MATERIALIZED VIEW
CREATE MEASURE FOLDER
CREATE MINING MODEL
CREATE OPERATOR
CREATE PROCEDURE
CREATE PROFILE
CREATE PUBLIC DATABASE LINK
CREATE PUBLIC SYNONYM
CREATE ROLE
CREATE ROLLBACK SEGMENT
CREATE RULE
CREATE RULE SET
CREATE SEQUENCE
CREATE SESSION
CREATE SYNONYM
CREATE TABLE
CREATE TABLESPACE
CREATE TRIGGER
CREATE TYPE
CREATE USER
CREATE VIEW
DEBUG ANY PROCEDURE
DEBUG CONNECT SESSION
DELETE ANY CUBE DIMENSION
DELETE ANY MEASURE FOLDER
DELETE ANY TABLE
DEQUEUE ANY QUEUE
DROP ANY ASSEMBLY
DROP ANY CLUSTER
DROP ANY CONTEXT
DROP ANY CUBE
DROP ANY CUBE BUILD PROCESS
DROP ANY CUBE DIMENSION
DROP ANY DIMENSION
DROP ANY DIRECTORY
DROP ANY EDITION
DROP ANY EVALUATION CONTEXT
DROP ANY INDEX
DROP ANY INDEXTYPE
DROP ANY LIBRARY
DROP ANY MATERIALIZED VIEW
DROP ANY MEASURE FOLDER
DROP ANY MINING MODEL
DROP ANY OPERATOR
DROP ANY OUTLINE
DROP ANY PROCEDURE
DROP ANY ROLE
DROP ANY RULE
DROP ANY RULE SET
DROP ANY SEQUENCE
DROP ANY SQL PROFILE
DROP ANY SYNONYM
DROP ANY TABLE
DROP ANY TRIGGER
DROP ANY TYPE
DROP ANY VIEW
DROP PROFILE
DROP PUBLIC DATABASE LINK
DROP PUBLIC SYNONYM
DROP ROLLBACK SEGMENT
DROP TABLESPACE
DROP USER
ENQUEUE ANY QUEUE
EXECUTE ANY ASSEMBLY
EXECUTE ANY CLASS
EXECUTE ANY EVALUATION CONTEXT
EXECUTE ANY INDEXTYPE
EXECUTE ANY LIBRARY
EXECUTE ANY OPERATOR
EXECUTE ANY PROCEDURE
EXECUTE ANY PROGRAM
EXECUTE ANY RULE
EXECUTE ANY RULE SET
EXECUTE ANY TYPE
EXECUTE ASSEMBLY
EXEMPT ACCESS POLICY
EXEMPT IDENTITY POLICY
EXPORT FULL DATABASE
FLASHBACK ANY TABLE
FLASHBACK ARCHIVE ADMINISTER
FORCE ANY TRANSACTION
FORCE TRANSACTION
GLOBAL QUERY REWRITE
GRANT ANY OBJECT PRIVILEGE
GRANT ANY PRIVILEGE
GRANT ANY ROLE
IMPORT FULL DATABASE
INSERT ANY CUBE DIMENSION
INSERT ANY MEASURE FOLDER
INSERT ANY TABLE
LOCK ANY TABLE
MANAGE ANY FILE GROUP
MANAGE ANY QUEUE
MANAGE FILE GROUP
MANAGE SCHEDULER
MANAGE TABLESPACE
MERGE ANY VIEW
ON COMMIT REFRESH
QUERY REWRITE
READ ANY FILE GROUP
RESTRICTED SESSION
RESUMABLE
SELECT ANY CUBE
SELECT ANY CUBE DIMENSION
SELECT ANY DICTIONARY
SELECT ANY MINING MODEL
SELECT ANY SEQUENCE
SELECT ANY TABLE
SELECT ANY TRANSACTION
SYSDBA
SYSOPER
UNDER ANY TABLE
UNDER ANY TYPE
UNDER ANY VIEW
UNLIMITED TABLESPACE
UPDATE ANY CUBE
UPDATE ANY CUBE BUILD PROCESS
UPDATE ANY CUBE DIMENSION
UPDATE ANY TABLE

これらの権限は通常、テーブルの作成、テーブルの削除、テーブルの変更、ユーザーロールの作成と削除、接続の確立に使用されます。たとえば、テーブルの作成、任意のテーブルの作成、ユーザーの作成、セッションの作成、ロールの作成などです。

ユーザーのすべての権限をクエリします。select* from session_privs order by PRIVILEGE;-このユーザーはログインする必要があり、クエリはユーザーのシステム権限です。

上記の202のアクセス許可は、すべてシステムのアクセス許可です。一般的に使用されるアクセス許可は、テーブルとビューに関連するすべてのアクセス許可、つまり、テーブルとビューという単語を含むアクセス許可です。たとえば、テーブルを作成し、任意のテーブルを作成します(たとえば、テーブルを作成するためのユーザー制限がないことを意味します。この任意の権限で、自分自身を含む任意のユーザーのテーブルを作成できます)

 

3. Oracleデータベースシステムの組み込みの役割

キャラクターは一体何ですか?実際、ロールはアクセス許可の論理的なコレクションです。人と言えば、役割には権限の組み合わせの後に名前が付けられます。これはセットであるため、権限は最小の粒度です。つまり、役割には1つの権限しかありません。n個の権限が存在する場合もあります。指定されたいくつかの権限がまとめられて名前が付けられ、この名前が役割になります。

では、パーミッションの論理的なコレクションは何ですか---ロール?SQLクエリステートメントは次のとおりです。select* from dba_roles order by role; 11gバージョンには約50の組み込みロールがあり、1つのロールはdbaと呼ばれます。

このdbaはロールのボスであり、基本的なデータベース権限はこのロールによって所有されます。ロールが所有する権限を表示するには、例としてdbaのロールを示します。SQLステートメントは次のとおりです。

select * from role_sys_privs where role = 'DBA' order by PRIVILEGE;

出力はおおまかに上記のようになり、dbaのロール権限がすべての側面をカバーし、システム権限が基本的に存在することがわかります。実際、上記のシステムが非常に優れている最大の理由は、 dba。

システムユーザーがdbaロールを持っていることを証明するSQLステートメントは次のとおりです。SELECTGRANTEE、GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'SYSTEM';-システムユーザーのロールを照会します。

同様に、ユーザーscottが持つ役割を照会するには、SQLステートメントは次のようになります。SELECTGRANTEE、GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'SCOTT';-scottユーザーが持つ役割を照会します。

ここで、被付与者に続く引用符内のすべてのコンテンツは、コンテンツを見つけるためにすべて大文字である必要があることに注意してください。そうでない場合、エラーは報告されず、コンテンツは返されません。

つまり、ロールdbaはすべてのロールのボスであり、基本的にすべての権限がこのロールに含まれています。

もう1つの一般的に使用される役割はリソースです。このリソースの役割が持つ権限を確認できます。select* from role_sys_privs where role = 'RESOURCE' order by PRIVILEGE;もちろん、リソースの役割はdba権限に比べて比較的小さく、いくつかを完了するのに適しています個人用のテーブルの作成などの基本的なタスク。

隠された役割もあります。無形の役割を公開することはできません。多くの人が、それはすべてのユーザーの集まりであると言います。ここでは、慈悲深い人は慈悲深い人と賢い人を見ています。これは隠されているので、それによって多くの血の風が発生します。血の風は後でどのようになるのか、この公開については後で詳しく説明します。

4.ユーザーと権限の組み合わせと分離---承認と剥奪

権限は、塩やパンと同じように、水や食べ物のようにユーザーに与えられます。ユーザーは、役割を果たすための権限を持っている必要があります。権限のみが、ユーザーができることとできないことを制限できます。Oracleシステムでは、デフォルトで付与されていない権限を持つユーザー使用できません。特定の権限が付与されている場合にのみ、ユーザーは、ユーザーの作成など、この権限で許可されていることを実行できます。このユーザーのみがこの権限を持っているか、この権限を継承して新しいユーザーを作成します。あまり意味がないので、承認と行く権利について話しましょう。

(1)新しいユーザーzskを作成するためのSQLステートメントは次のとおりです。createuserzsk;-最初は2人の高特権ユーザーしかないため、システムまたはsysユーザーを使用して新しいユーザーを作成します。選択。

(2)、またはsysユーザーの下でSQLステートメントを実行します。SELECTGRANTEE、GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'ZSK';-出力はありません。これは、このユーザーが実際に権限のないクリーンなユーザーであることを示します。

(3)、grantステートメント、grant xxx、xxx、xxxxをユーザー名に付与します。たとえば、SQLステートメント:grant create session、create table、create any table to zsk; ---ユーザーにzskログインおよびテーブル作成権限を付与します。これらの3つの権限はシステム権限であり、オブジェクト権限ではありません。したがって、そのアクセス許可のクエリは次のようになります。select* from dba_sys_privs where grantee = 'ZSK';-出力結果は次のとおりです。

3番目のオプションadmim_optionの値がnoであることに注意してください。これは、ユーザーzskに、他のユーザーに自分の権限を付与する権限がないことを意味します。これは、私たちがしばしばカスケード認証と呼ぶものです。

同時に、権限を付与する場合は2つのサフィックスがあります。1つはadminオプション付きです。たとえば、上記のステートメントとこのサフィックスは次のとおりです。grantcreate session、create table、create any table to zsk withadminオプション;-

zskのシステム権限を照会するSQLステートメントは次のとおりです。select * from dba_sys_privs where grantee = 'ZSK'; -出力結果は次のとおりです。

このとき、zskのユーザーは、admin_option列の値の値を使用して既存のアクセス許可を他のユーザーに付与する権利があります。つまり、yesのアクセス許可がある場合、他のユーザーに渡すことができます。新しいユーザーを追加するにはzsk1、次にユーザーzskにログインし、上記の3つのアクセス許可をzsk1に割り当てます。3つのアクセス許可が「はい」である限り、他のユーザーを許可する必要があります。長い間すぐにわかります。須藤です。はい、カスケードはsudoです。

もう1つのサフィックスはgrantオプション付きです。このサフィックスはsudoオブジェクトのアクセス許可用です。確信が持てない場合は、このサフィックスを使用してsudoにシステムアクセス許可を付与します。申し訳ありませんが、エラーを報告します。たとえば、それでも上記のエンパワーメント:

システムは明確に通知します。つまり、上の図の最後の行で、管理オプションを指定するように求められます。これで、友人はシステム権限とオブジェクト権限の間で混乱することを心配する必要がなくなります。

オブジェクトのアクセス許可は、ユーザー自身のテーブルのクエリ、ユーザーの下のテーブルの削除など、テーブルおよびビュー操作の選択、削除、変更、更新、切り捨て、挿入のアクセス許可です。これらはオブジェクトのアクセス許可です。

次に、sudoアクセス許可サフィックスを追加せずに、sysユーザーの下のaccess $テーブルのアクセス許可をzskユーザーに照会します。SQLステートメントは次のとおりです。sys.access$のselectをzskに付与します。

この時点で、zskユーザーのオブジェクト権限を照会するには、SQLステートメントは次のようになります。select* from dba_tab_privs where grantee = 'ZSK';-出力は次のとおりです。

このとき、6列目の値はnoです。sudoサフィックスを追加すると、6列目はyesになります。SQLステートメントは次のとおりです。grantオプションを使用してsys.access $のselectをzskに付与します。

zskユーザーのオブジェクト権限のクエリは次のとおりです。select* from dba_tab_privs where grantee = 'ZSK';-2つの緑の違いに注意してください

システム権限の付与は通常、ユーザーに行われ、オブジェクト権限の付与は通常、ユーザーに行われます

(4)、運営する権利

ユーザーからのアクセス許可を取り消します。たとえば、上記のzskユーザーには4つのアクセス許可があり、新しいテーブルアクセス許可を削除し、sysユーザーテーブルのaccess $アクセス許可を照会します。これを行うには、次のようにします。

create tableを取り消し、zskから任意のテーブルを作成します。

zskからsys.access $のselectを取り消します。

権利を削除するために注意すべき3つのポイントがあります。1。同じタイプの複数の権限を使用して分離します。2.システム権限とオブジェクト権限を混在させることはできません。つまり、システム権限とオブジェクト権限を書き込んでから取り消すと、エラーが報告されます。同様に、権限を付与するときに混在させることはできません。3.剥奪が成功した後、剥奪を繰り返すことはできません。そうしないと、エラーが報告されます。

5.役割の権限付与と承認解除の操作

この問題をよりよく説明するために、新しく作成されたユーザーzskとシステム管理者ユーザーsysを使用して操作します。

(1)ユーザー名とロール名を同じにすることはできません

最初に着陸したsysユーザーは、文字数を確認します。注文ロールによるDBA_ROLESからのSELECT *;  -このロールをzskで確認できません、

そこにいるユーザーを確認し、ユーザー名でdba_usersの順序から*を選択します; -zskという名前のユーザーがいることがわかります。

create role zsk;-この時点でエラーが報告され、ユーザー名とロールを繰り返すことはできません。そのため、ロール名はzsk_roleに変更されます。新しいロールを再度作成してください:create rolezsk_role;ロールは正常に実行されます作成した。

(2)この新しく作成されたロールzsk_roleが現在どのような権限を持っているかを確認しますか?

select * from role_sys_privs where role = 'ZSK_ROLE' order byPRIVILEGE;-ロールの権限が見つかりませんでした

(3)zsk_roleの役割に、新しいユーザー作成ユーザーのシステム権限を付与します。

createuserをzsk_roleに付与します;-ロールエンパワーメントとユーザーエンパワーメントの間に基本的に変更がないことがわかります。

(4)ロールをユーザーzskに割り当てます

zsk_roleをzskに付与します;-権限のようにユーザーに役割を割り当てます。

(5)zskユーザーにログインし、別の通常ユーザーを作成して、新しいユーザー権限があるかどうかを確認します。

zskユーザーが新しいユーザーを作成する権限を持っていることがわかります。

(6)この時点でsysユーザーにログインし、zskのアクセス許可を確認すると、ユーザーの作成アクセス許可は表示されませんが、zskが所有するロールを照会するとzsk_roleのロールが表示されます。

select * from dba_tab_privs where grantee = 'ZSK';

SELECT GRANTEE、GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'ZSK';

7sysユーザーにログインし、zsk_roleにsysの下のalter_qtテーブルを照会する権限を与えます。

sys.alert_qtのselectをzsk_roleに付与します;-この時点で、zskユーザーに切り替えます。これにより、sysの下のalert_qtテーブルにクエリを実行できます。

(8)、ユーザーの複数の役割の問題-アクティブ化と禁止された役割のアクセス許可。

前述のように、ロールは権限のコレクションです。上記の実験では、任意の権限をロールに詰め込むことができることも確認されていますが、ユーザーは複数のロールを持つことができます。zskユーザーが多くのロールを持っていると仮定すると、現時点では、役割を選択するにはこれがデフォルトの役割です。この選択されたアクションは、アクティブ化と呼ばれます。

SQLステートメントは次のとおりです。setrolezsk_role; -zskユーザーで操作すると、他のロールのアクセス許可は有効にならず、zsk_roleロールのアクセス許可のみが使用されます。

ある役割がそれを使用するのとは異なり、他のユーザーによって直接付与されたアクセス許可を使用したい場合はどうなりますか?SQLステートメントを実行します。setrolenone;

zskユーザーに切り替えてsetrole noneを実行します;-現時点では、新しいユーザーの作成は成功しません。つまり、set role none;は、ユーザーがロールを使用しないことを意味します。

 

 

 

結論として:

select * from dba_roles order by role; -all role

select * from dba_users order by username; -all users

select * from dba_tab_privs where grantee = 'ZSK';-zskユーザーのオブジェクト権限を照会します。zskは、照会する任意のユーザーに置き換えることができます。高度な権限を問い合わせることができます

select * from dba_sys_privs where grantee = 'ZSK';-zskユーザーのシステム権限を照会します。zskは、照会する任意のユーザーに置き換えることができます。高度な権限を問い合わせることができます

select * from role_sys_privs where role = 'ZSK_ROLE' order byPRIVILEGE;-このロールのシステム権限を照会しますzsk_role

select * from role_sys_privs where role = 'DBA' order byPRIVILEGE;-ロールdbaのシステム権限を照会します。202レコード。

select * from role_tab_privs where role = 'ZSK_ROLE' order byPRIVILEGE;-ロールのオブジェクト権限を照会します

select * from role_tab_privs where role = 'DBA' order byPRIVILEGE;-このロールdbaのオブジェクト権限を照会します。284レコード。

select * from session_privs order by PRIVILEGE;-このユーザーにログインする必要があり、このユーザーのシステム権限を照会する必要があります。照会を実行するにはログインする必要があり、照会できるのは現在のユーザー。
 

Linuxシステムのsudoエンパワーメントに似たカスケードエンパワーメントに注意してください。2つの権限が混在することを期待しないでください。

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: blog.csdn.net/alwaysbefine/article/details/112247239