ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
||||||||||||||
|
4D v20
GRANT
|
GRANT[READ | READ_WRITE | ALL] ON sql_name TO sql_name |
||
GRANT コマンドはsql_name スキーマ (第一引数) に割り当てるアクセス権を設定するために使用します。これらのアクセス権は、二番目のsql_name 引数で指定する4Dユーザグループに割り当てられます。
READ、READ_WRITEそしてALL キーワードを使用して、テーブルに許可されるアクセス権を指定します:
各アクセスタイプはそれぞれ個別に設定される点に留意してください。あるグループに READ アクセス権のみを設定した場合、この設定は効果を持たないでしょう。なぜなら当該のグループおよび他のグループも、デフォルトですべてのグループに対し設定されている READ_WRITE アクセスが有効だからです。READ アクセスを設定するには GRANT を二回呼び出さなければなりません (例題 2参照)。
アクセスコントロールは外部接続にのみ適用されます。Begin SQL/End SQLタグやSQL EXECUTEなどのコマンドで4D内で実行されるSQLコードは依然としてフルアクセスを持っています。
互換性に関する注意: 以前のバージョンのデータベースをバージョン11.3以降に変換する際、(アプリケーション環境設定のSQLページで設定された) グローバルアクセス権がデフォルトスキーマに転送されます。
二番目の sql_name 引数には、スキーマにアクセス権を割り当てたい4Dユーザグループ名を指定しなければなりません。このグループは4Dデータベースに存在していなければな りません。
注: 4Dはグループ名にスペースやアクセント文字を許可しますが、これはSQL標準で許可されていません。この場合、グループ名を [ と ] の間に記述します。例えば: GRANT READ ON [my schema] TO [the admins!]
データベースのDesignerとAdministratorのみがスキーマを変更できます。
警告: SQL スキーマを実装するには、4D のアクセス管理システムが有効化されていることが必要になります(別の言い方をすると、Designer にパスワードが割り当てられている必要があります)。そうでない場合、全てのユーザーが制限なくデータにアクセスできてしまうことになります。
4D はアクセス権とは独立して、参照整合性に関する原則を適用します。例えば2つのテーブルTable1とTable2があり、N対1のリレーション (Table2 -> Table1) で接続されているとします。 Table1はスキーマS1に属し、Table2はスキーマS2に属します。スキーマS1へのアクセス権を持つが、S2へのアクセス権を持たないユーザは、Table1のレコードを削除できます。この場合、参照整合性の原則を適用するため、Table1の削除されたレコードにリレートするTable2のレコードも削除されます。
"Power_Users" グループに、MySchema1のデータへの読み書きアクセスを許可します:
GRANT READ_WRITE ON MySchema1 TO POWER_USERS
"Readers" グループに読み込みのみアクセスを設定します。この場合 (READ_WRITE アクセスを持つグループが <Everybody> でなくなるため)、最低一つのグループに READ_WRITE アクセスを設定しなければなりません (ここでは"Admin"):
GRANT READ ON MySchema2 TO Readers /*READ アクセスを設定*/
GRANT READ_WRITE ON MySchema2 TO Admins /*READ_WRITEアクセスを特定のグループに限定して設定*/
プロダクト: 4D
テーマ: SQLコマンド
SQLリファレンス ( 4D v20)