2016-12-06 7 views
0

ユーザがjack、グループがdatateamであるとします。ユーザーjackはグループdatateamに属します。Sentry特権モデル:Sentryはサーバー特権からデータベース特権を奪うことができますか?

認可のためにSentryを使用してください。

create role admin; 
grant role admin to group datateam; 
grant all on server server1 to role admin; 

ここで、ロールadminには以下の特典があります。

+-----------+--------+------------+---------+-----------------+-----------------+------------+---------------+-------------------+----------+--+ 
| database | table | partition | column | principal_name | principal_type | privilege | grant_option | grant_time  | grantor | 
+-----------+--------+------------+---------+-----------------+-----------------+------------+---------------+-------------------+----------+--+ 
| *   |  |   |   | admin   | ROLE   | *   | false   | 1480985013185000 | --  | 
+-----------+--------+------------+---------+-----------------+-----------------+------------+---------------+-------------------+----------+--+ 

このデータベースがあるとします。

create database testdb; 

成功です。ユーザーjackがデータベースtestdbを作成しました。

の特権を取り消すためにSentryを使用してください。

revoke all on database `testdb` from role admin; 

恩恵は依然として同じです。

+-----------+--------+------------+---------+-----------------+-----------------+------------+---------------+-------------------+----------+--+ 
| database | table | partition | column | principal_name | principal_type | privilege | grant_option | grant_time  | grantor | 
+-----------+--------+------------+---------+-----------------+-----------------+------------+---------------+-------------------+----------+--+ 
| *   |  |   |   | admin   | ROLE   | *   | false   | 1480985013185000 | --  | 
+-----------+--------+------------+---------+-----------------+-----------------+------------+---------------+-------------------+----------+--+ 

は、Sentryは離れて、サーバーからデータベースtestdbに権限を取るべきではないでしょうか。

documentation

答えて

0

に記載されるようになし、セントリー権限モデルは、階層的である:

権限ハイブ倉庫内の異なるオブジェクトに付与することができます。 付与できる特権は、オブジェクト階層の のレベルに関連付けられています。 の階層のコンテナオブジェクトに権限が付与されている場合、基本オブジェクトは自動的にそのオブジェクトを継承します。 インスタンスの場合、ユーザーがデータベーススコープに対するすべての特権を持っている場合、 (s)彼はスコープ に含まれるすべてのベースオブジェクトに対するすべての特権を持ちます。

特権は常に負ではありません。デフォルトでは何も始まらず、特権を追加します。

階層内の上位レベル(サーバーなど)で特権を持っている場合、下位レベル(データベースなど)でこの特権から何も取ることはできません。 のみ、下位レベルのより細かい特権を追加できます。

具体例:現在2つのデータベースAとBがあるとします。サーバーレベルで付与された権限は、AとB、および作成された新しいデータベースに適用されます。

Server-level Database-level Result 
A SELECT   -    SELECT 
B SELECT   -    SELECT 

はその後、我々は、データベースレベルでよりきめ細かい権限を追加することができ、例えば:我々は、サーバーレベルでのSELECT許可としましょうデータベースBにINSERT:

Server-level Database-level Result 
A SELECT   -    SELECT 
B SELECT   INSERT   SELECT,INSERT 

その後、我々は、データベースB上のすべてのデータベース・レベルの権限を取り消された場合、我々は戻って、我々はスタート地点にある:下位レベルの権限を変更する

Server-level Database-level Result 
A SELECT   -    SELECT 
B SELECT   -    SELECT 

はには影響しませんより高いレベルは、より低いレベルによって継承される。

関連する問題