こんにちは、ねこです。

自称プログラマのおばちゃんのブログです。いろいろあるよねぇ~。

OCP#3/Managing Users, Roles and Privilegesのビデオを見てみた。

2020-05-01 02:34:47 | プログラム 勉強

#USER

#直接PRIVILEGE

#ROLE

#ROLEを介してのPRIVILEGE

#PROFILE

#PASSWORD認証

#TABLESPACE

#QUOTAでTABLESPACEのサイズを決定

 

【Userを作ろう】

権限を与えるのに2つの方法があります。『Directly』と『Role』です。そして『Role』を使うのが『RBAC(Role Bases Access Control)』

CREATE USER Beerneko
IDENTIFIED BY ねこねこぱすわーど
PASSWORD EXPIRE;

【Privilege-権限】

Users cannot connect until they have been granted the 'CREATE SESSION' privilege.ユーザーは、「CREATE SESSION」権限が付与されるまで接続できません。

GRANT CREATE SESSION TO Beerneko ->これで、セッションをつかってDBにアクセスすることができます。

*そしてぇっ!この『PASSWORD EXPIRE』のお陰でパスワードを新しく作ってもらうことができます。

 

sqlplus
Enter user-name: Beerneko
Enter password: yourpassword
ERROR: 

Systemでまずははいらなきゃ。

Enter user-name:system
Enter password:yoursystempassword
Last Successful login time:jFri Apr 9909999099:99:99:99 -99:99

Connected to:
.......

SQL> grant create sessio to Beerneko

セッションの権限をあたえてやらなきゃ。

Grant successded.

SQL>quit


sqlplus
Enter user-name: Beerneko
Enter password: yourpassword
ERROR:
....The password has expired

ここで新しいパスワードをいれてやる。

Changing password for Beerneko
New jpassword:
Retype new password:
Password chenge

....
Connected to:
....

といった具合です。

 

【Userに権限を与えよう】

RBAC!!!さっきやったよね。

一つ以上のROLEを与えることができるよ。

その前に、権限はユーザに与えられるものでなくって、「ROLE」に与えられるもの。その「ROLE」を与えられたユーザが「ROLE」に従って権限を持つことになるのさ。

 

GRANT CREATE SESSION TO Beerneko;

GRANT SELECT ANY TABLE TO Beerneko;

GRANT CREATE SESSION, SELECT ANY TABLE TO Beerneko;

とこんな感じです。

<object>テーブルごととか、コラムごととか、もっと細かく定義したい場合です。</object>

GRANT SELECT ON EMPO.EMPLOYEES TO Beerneko;

GRANT UPDATE (SALARY) ON EMP.EMPLOYEES TO Beerneko;

Views are generally regarded as a preferred method over individual column permissions.ビューは一般に、個々の列の権限よりも優先される方法と見なされています。

 

【Userに権限を与えよう➔もっと細かくね。】

A ROLE is a bundle of privileges that can be granted or revoked from a user as a single unit ROLEは、単一のユニットとしてユーザーから付与または取り消すことができる特権のバンドルです。

A key part of ROLE Based Access Control.

ROLES are not schema object but do share a namespace with users

If you already have a role with a name, you can't create a user with that same name. Creating a role is very straightforward. You use the create role DDL statement and simply supply the name of the role that you want to create that follows all the standard naming conventions and rules of the Oracle database.
But having done that, really what you want to do is assign privileges to that role. And that assignment is done in the exact same way that you assign privileges to users. It's the same statement. You just simply replace the user name with the role name.同じ名前のロールがすでにある場合、同じ名前のユーザーを作成することはできません。 ロールの作成は非常に簡単です。 create role DDLステートメントを使用して、Oracleデータベースのすべての標準の命名規則と規則に従う、作成するロールの名前を指定します。
しかし、それを実行したら、実際に実行したいことは、そのロールに特権を割り当てることです。 そして、その割り当ては、ユーザーに特権を割り当てるのとまったく同じ方法で行われます。 同じことです。 ユーザー名をロール名に置き換えるだけです。

CREATE ROLE sales_dept:

Once created, privileges can be assigned to roles similarly to users.

GRANT ALL ON customers TO sales_dept;

そのほかにも、前回やったようにいろんなROLEがあります。ここに列挙しときます。

GRANT SELECT ON orders To sales_dept;
GRANT INSERT ON fulfilled TO sales_dept;
GRANT ALL ON monthly TO sales_dept;
GRANT SELECT ON commissions TO sales_dept;
GRANT CREATE SESSION TO sales_dept;

そしてっ!それをユーザに与えます。

GRANT sales_dept TO Beerneko;

 

ROLEにたいして、ROLEを権限として与えてやれる。

CREATE ROLE sales_mgr;

GRANT sales_dept TO sales_mgr;ここでROLEどうしがネストしてます。
GRANT ALL ON orders, ALL ON fulfilled,
ALL ON monthly, ALL ON commissions To sales_mgr;

GRANT sales_mgr TO Beerneko;

これでBeernekoはsales_deptのROLEと他にもいっぱい権限をもらっちゃいました。

REVOKE sales_dept FROM Beerneko;

前からあったsales_deptのROLEをとってきれいにしておきます。

ところがっ!Beernekoはまだ管理職試験に合格してません。なので「Inactive」の状態で試験に合格して初めてログインするときまでそのままでね。

Roles can be set to be 'Inactive' upon loginログイン時にロールを「非アクティブ」に設定できます

ALTER USER Beerneko DEFAULT ROLE sales_dept;

Sales_dept is now active, but sales_mgr is inactive.sales_deptがアクティブになりましたが、sales_mgrは非アクティブです。

SET ROLE sales_mgr;

CREATE ROLE sales_mgr IDENTIFIED BY ;

 

いかんっ!こんなに時間かけてやってたら日が暮れる!!!

 

【Profile+Passwordパスワードとプロファイル】

DBA_PROFILESに詳細あり。

プロファイルを作りましょう。

おうっ!ROLEとにてるけど、ちがうぞ!

ではまずはユーザ作ったらプロファイルも作りましょう。

CREATE PROFILE two_wrong LIMIT(リミットを付けます。)
failed_login_attempts 2 (二回ログインに失敗したら)
password_lock_time 7;(7日間ログインできません。)
ALTER USER Beerneko PROFILE two_wrong;

*アカウントがロックされた場合

SELECT account_status FROM dba_users WHERE username = 'Beerneko';
ACCOUNT_STATUS
-----------------------------------------------
LOCKED(TIMED)
SQL>drop profile two_wrong cascade: ←『cascade』が必要な理由は、そもそもユーザーがすでにアサインされているからです。
これでBeernekoのプロファイルはデフォルトにもどりました。

【Authentication認証】

<デフォルト認証>

CREATE USER Beerneko IDENTIFIED BY yourpassword;

Encrypted at REST and In-Transit with AESRESTで暗号化され、AESで転送中

<外部認証>

LDAP、OS Security、Password File(For SYSDBAこれはデフォルトでOracleにある)

<認証方法>

SSL, Kerberos or RADIUS, ADIUS, Centralized Directory Service

<例:Active Directory (LDAP)>

CREATE USER Beerneko 
IDENTIFIED GLOBALLY AS ' CN=Beerneko, OU=division1,O=example, C=US';

 

【TablespacesとQUOTA】

これでユーザーごとの使えるサイズが決まります。

ALTER USER Beerneko QUOTA 10M ON Beernekotablespace

*ディフォルトではQUOTAがアンリミットです!気を付けて!

sqlplus
Enter user-name:system
Enter Password: yourpassword
......
SQL>SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE
PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';
PROPERTY_VALUE
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------
USERS

SQL>SELECT DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM dba_users WHERE username = 'Beerneko'

DEFAULT_TABLESPACE                   TEMPORARY_TABLESPACE
----------------------------------   ----------------------------------
Users                                                  TEMP


SQL>ALTER USER Beerneko QUOTA 100M ON USERS; SQL>SELECT tablespace_name, bytes, max_bytes FROM dba_ts_quotas WHERE username = 'Beerneko';

TABLESPACE_NAME   BYTES  MAX_BYTES
---------------------   --------  ------------
USERS                               0       104857600

 

では、おさらい。

#USER

#直接PRIVILEGE

#ROLE

#ROLEを介してのPRIVILEGE

#PROFILE

#PASSWORD認証

#TABLESPACE

#QUOTAでTABLESPACEのサイズを決定

今日はこんだけ勉強した。

タイプするだけでじかんかかるぅ~ぅ。

 

明日は、こちら。

『Moving Data』https://www.cbtnuggets.com/learn/it-training/oracle-database-12c-r2-moving-data-1z0-072

 


最新の画像もっと見る

コメントを投稿