6.9 ACL、Statement
以下にACL、Statement定義と定義例を示します。ACL、Statementの詳細については「ユーザーとACL」を参照してください。
ラベル | デフォルト値 | 必須 | 説明 | |
---|---|---|---|---|
apiVersion: | 1.0 | Yes | APIバージョン | |
kind: | Yes | ACLの際はaclを指定する | ||
type: | No | ACLの際はresourceのみ指定可能 | ||
name: | Yes | ACL定義の内部名。本YAMLファイルのディレクトリ名を指定 | ||
label: | Yes | YAMLファイルの表示名 | ||
description: | No | このYAMLファイルに対する詳細説明 | ||
includes: | No | このYAMLファイルで利用する関連YAMLファイルを記載 | ||
- kind: | Yes | 読み込むYAMLファイルの種類 | ||
name: | Yes | 読み込むYAMLファイルの内部名 | ||
statements: | Yes | ACLにひもづけるStatementの名前をリスト形式で指定する。以下に記述例を示す。 例) statements: - statement_name1 - statement_name2 |
ラベル | デフォルト値 | 必須 | 説明 | |||
---|---|---|---|---|---|---|
apiVersion: | 1.0 | Yes | APIバージョン | |||
kind: | Yes | Statementの際はstatementを指定する | ||||
type: | No | Statementの際はresourceのみ指定可能 | ||||
name: | Yes | Statement定義の内部名。本YAMLファイルのディレクトリ名を指定。 | ||||
label: | Yes | YAMLファイルの表示名 | ||||
description: | No | このYAMLファイルに対する詳細説明 | ||||
includes: | No | このYAMLファイルで利用する関連YAMLファイルを記載 | ||||
- kind: | Yes | 読み込むYAMLファイルの種類 | ||||
name: | Yes | 読み込むYAMLファイルの内部名 | ||||
authzType: | Yes | Statementの権限のタイプ。以下の値が使用可能 - uri - document - object |
||||
actions: | Yes | Statementのアクション。authzTypeとリソースによって使用可能な値が異なる。 各authzTypeにおけるアクションは「(表)各authzTypeにおけるアクション」を参照。リスト形式で表記する。uriタイプの際に使用 |
||||
action: | Yes | Statementのアクション。authzTypeとリソースによって使用可能な値が異なる。各authzTypeにおけるアクションは「(表)各authzTypeにおけるアクション」を参照。documentタイプとobjectタイプの際に使用 | ||||
resources: | Yes | リソース。listで表記し、全てのauthzTypeで使用可能。 | ||||
- format: | No | Valueの形式。以下が使用可能 - wildcard (default) - regex |
||||
value: | Yes | リソースを識別するための値。authzTypeに一致するリソースを指定する。形式に応じて、ワイルドカードと正規表現を使用できる。 authzType: document の場合 value: <kind名>:<Document名>:<documentのkey-valueのPath> authzType: uri の場合 value: https://<Ops Iホスト名>/<対象Path> authzType: object の場合 value: /api/v1/<API> <API>で指定可能な値はAPIリファレンスを参照してください。 |
||||
graphqlQuery: | No | GraphQLのクエリ名。ValueのAPIがGraphQLの場合に指定したクエリ名を指定する。 | ||||
format: | No | Valueの形式。以下が使用可能 - wildcard (default) - regex |
||||
Value: | Yes | GraphQLのクエリ名を識別するための値。形式に応じて、ワイルドカードと正規表現を使用できる。 | ||||
effect: | Yes | Statementのeffect。以下が使用可能 - allow (デフォルト値) - deny |
||||
conditions: | No | conditionsは認可の条件を示す。 複数の条件を記述することができ、第一階層のリストはORを表す。 第二階層はANDとして複数の条件を記述できる。 このフィールドは、以下のauthzTypeで使用できる。 - object このフィールドを省略した場合は、全条件を満たすことになる。 |
||||
- | No | |||||
-operator: | Yes | オペレータ。以下が使用可能 - eq, ne (==,!=) - gt, ge (>, >=) - lt, le (<, <=) - in, notIn(リストにおける共通項の有無判定とリスト内の要素との一致の判定が可能。) - wildcard, regex |
||||
firstOperand: | Yes | 第1オペランド。 値またはコンテキストが指定されていること。使用できるコンテキストについては「使用可能なコンテキスト」を参照。 コンテキストの使用可能な値はobjectによって異なる。objectは新しく作成される"New"とOps I上既存としての"Recorded"がある。評価する"New"レコードの値は"New.Object.*"で、Recordedレコードの値は"Recorded.Object.*"で表記する。 (例:{{ .GetValue ".New.Object.createBy" }}) 第1オペランドは以下の形式をサポートする。 - string (operator: eq, ne, gt, ge, lt, le) - list (operator: in, notIn) - wildcard(operator: wildcard), regex(operator: regex)) - Dynamic field(operator: any) 例){{ .GetValue ".Requester.GroupNames" }} |
||||
secondOperand: | Yes | 第2オペランド。“firstOperand”と“operator”が指定されていること。 値またはコンテキストが指定されていること。使用できるコンテキストについては「使用可能なコンテキスト」を参照。 コンテキストが使用可能な値はobjectによって異なる。objectは新しく作成される"New"とOps I上既存としての"Recorded"がある。評価する"New"レコードの値は"New.Object.*"で、Recordedレコードの値は"Recorded.Object.*"で表記する。 (例:{{ .GetValue ".New.Object.createBy" }}) 第2オペランドは以下の形式をサポートする。 - string (operator: eq, ne, gt, ge, lt, le, wildcard, regex) - list (operator: in, notIn) - Dynamic field(operator: any) 例) {{ .GetValue ".Requester.GroupNames" }} |
||||
fields: | No | 評価するフィールドのリスト。以下のauthzTypeで使用できる。 - object 使用可能な値はリソースのデータモデルによって異なる。この条件を省略した場合は、全フィールドが条件を満たすことになる。 |
||||
- format: | No | Valueの形式。以下が使用可能 - wildcard (default) - regex |
||||
value: | Yes | リソースを識別するための値。authzTypeに一致するリソースを指定する。形式に応じて、ワイルドカードと正規表現を使用できる。 |
authzType | ActionValue | 説明 |
---|---|---|
uri | GET | GETリクエスト |
uri | POST | POSTリクエスト |
uri | PUT | PUTリクエスト |
uri | DELETE | DELETEリクエスト |
uri | PATCH | PATCHリクエスト |
uri | それ以外 | 指定できません。それ以外のHTTPメソッドはデフォルト動作として許可されます。 |
document | read | アプリケーションまたはUI要素(タブ、コンポーネント)を表示する。 |
object | read | ユーザーによるreadを承認する。 |
object | create | ユーザーによるcreateを承認する。 |
object | update | ユーザーによるupdateを承認する。 |
object | delete | ユーザーによるdeleteを承認する。 |
コンテキスト | 説明 |
---|---|
{{.GetValue ".Requester.Id" }} | リクエストユーザーのID |
{{.GetValue ".Requester.Name" }} | リクエストユーザーの名前 |
{{ .GetValue ".Requester.DisplayName" }} | リクエストユーザーの表示名 |
{{ .GetValue ".Requester.GroupNames" }} | ユーザーのグループの名前 リスト形式で返却される。 |
{{ .GetValue ".Requester.GroupIds" }} | ユーザーのグループのID リスト形式で返却される。 |
{{ .GetValue ".Requester.RoleNames" }} | ユーザーのロールの名前 リスト形式で返却される。 |
{{ .GetValue ".Requester.RoleIds" }} | ユーザーのロールのID リスト形式で返却される。 |
{{ .GetValue ".Requester.CustomerName" }} | リクエストユーザーの顧客名(ユーザーが顧客ユーザーの場合、顧客情報を含む。) |
{{ .GetValue ".Requester.CustomerId" }} | リクエストユーザーの顧客ID(ユーザーが顧客ユーザーの場合、顧客情報を含む) |
{{.GetValue ".New.Object.<FIELD>" }} | 評価のための申請者からの新しいリクエスト |
{{.GetValue ".Recorded.Object.<FIELD>" }} | 評価のためのOps Iに登録されたレコード |
{{.GetValue ".Recorded.Object” |.GetCustomer }} {{ .GetValue ".New.Object” | .GetCustomer }} |
GetCustomerは、入力されたオブジェクトに関連する顧客の名前を取得する。以下のオブジェクトが利用可能。 - sys_context - sys_schedule - ticket - article - sys_user - u CUSTOM_DATA オブジェクトが顧客に関連していない場合、nullが返される。(例:単一スケジュール、内部ユーザー) |
<定義例> ACL
apiVersion: 1.0
kind: acl
## Meta data
type: resource
name: acl_infra_default
label: acl_infra_default
description: |
This is an acl_infra_default acl.
You can action elements that is specified in statement.
But you cannot action elements that is not specified in statement.
## Dependencies
includes:
- kind: statement
name: statement_document_application_management_allow_default
# ACL DATA
statements:
- statement_document_application_management_allow_default
<定義例> Statement
apiVersion: 1.0
kind: statement
## Meta data
type: resource
name: user_workspace_statement
label: user_workspace
description: workspace hidden
authzType: document
action: read
resources:
- format: wildcard
value: application:sys_task:tabs\[0\].**
effect: deny # added