6.9 ACL、Statement

以下にACL、Statement定義と定義例を示します。ACL、Statementの詳細については「ユーザーとACL」を参照してください。

(表)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

(表)Statement定義

ラベル デフォルト値 必須 説明
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におけるアクション

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