6.9 ACL、Statement
以下にACL、Statement定義と定義例を示します。ACL、Statementの詳細については「ユーザーとACL」を参照してください。
ACLのYAML定義は以下です。
ラベル | デフォルト値 | 必須 | 説明 | |
---|---|---|---|---|
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のYAML定義は以下です。
ラベル | デフォルト値 | 必須 | 説明 | |||
---|---|---|---|---|---|---|
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の権限のタイプ。以下の値が使用可能
|
||||
actions: | Yes | Statementのアクション。authzTypeとリソースによって使用可能な値が異なる。 各authzTypeにおけるアクションは「(表)各authzTypeにおけるアクション」を参照。リスト形式で表記する。uriタイプの際に使用 |
||||
action: | Yes | Statementのアクション。authzTypeとリソースによって使用可能な値が異なる。各authzTypeにおけるアクションは「(表)各authzTypeにおけるアクション」を参照。documentタイプとobjectタイプの際に使用 | ||||
resources: | Yes | リソース。listで表記し、すべてのauthzTypeで使用可能。 | ||||
- format: | wildcard | No | Valueの形式。以下が使用可能
|
|||
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: | wildcard | No | Valueの形式。以下が使用可能
|
|||
Value: | Yes | GraphQLのクエリ名を識別するための値。形式に応じて、ワイルドカードと正規表現を使用できる。 | ||||
effect: | allow | Yes | Statementのeffect。以下が使用可能
|
|||
conditions: | No | conditionsは認可の条件を示す。 複数の条件を記述することができ、第一階層のリストはORを表す。 第二階層はANDとして複数の条件を記述できる。 このフィールドは、以下のauthzTypeで使用できる。
|
||||
- | No | |||||
- operator: | Yes | オペレータ。以下が使用可能
|
||||
firstOperand: | Yes | 第1オペランド。 値またはコンテキストが指定されていること。使用できるコンテキストについては「(表)使用可能なコンテキスト」を参照。 コンテキストの使用可能な値はobjectによって異なる。objectは新しく作成される"New"とOps I上既存としての"Recorded"がある。評価する"New"レコードの値は"New.Object.*"で、Recordedレコードの値は"Recorded.Object.*"で表記する。 例){{ .GetValue ".New.Object.createBy" }} 第1オペランドは以下の形式をサポートする。
|
||||
secondOperand: | Yes | 第2オペランド。"firstOperand"と"operator"が指定されていること。 値またはコンテキストが指定されていること。使用できるコンテキストについては「(表)使用可能なコンテキスト」を参照。 コンテキストが使用可能な値はobjectによって異なる。objectは新しく作成される"New"とOps I上既存としての"Recorded"がある。評価する"New"レコードの値は"New.Object.*"で、Recordedレコードの値は"Recorded.Object.*"で表記する。 例){{ .GetValue ".New.Object.createBy" }} 第2オペランドは以下の形式をサポートする。
|
||||
fields: | No | 評価するフィールドのリスト。以下のauthzTypeで使用できる。
|
||||
- format: | wildcard | No | Valueの形式。以下が使用可能
|
|||
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は、入力されたオブジェクトに関連する顧客の名前を取得する。以下のオブジェクトが利用可能。
|
<定義例> 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