6.9 ACL、Statement
以下にACL、Statement定義と定義例を示します。ACL、Statementの詳細については「ユーザーとACL」を参照してください。
ACLのYAML定義は以下です。
| ラベル | デフォルト値 | 必須※ | 説明 | |
|---|---|---|---|---|
| apiVersion: | Yes | APIバージョン 1.0を指定する |
||
| kind: | Yes | aclを指定する | ||
| type: | No | resourceを指定する Ops Iの運用機能に追加する新しい定義であることを示す |
||
| name: | Yes | ACL定義の内部名 nameは以下のルールに従う必要があります。
|
||
| label: | Yes | YAMLファイルに記載する運用機能の表示名 | ||
| includes: | No | このYAMLファイルで利用する関連YAMLファイルを記載
メモ
|
||
| - kind: | Yes | 読み込むYAMLファイルの種類 | ||
| name: | Yes | 読み込むYAMLファイルの内部名 | ||
| description: | No | このYAMLファイルに対する詳細説明 | ||
| statements: | Yes | ACLにひもづけるStatementの名前をリスト形式で指定する。以下に記述例を示す。 例) statements: - statement_name1 - statement_name2 |
||
StatementのYAML定義は以下です。
| ラベル | デフォルト値 | 必須※ | 説明 | |||
|---|---|---|---|---|---|---|
| apiVersion: | Yes | APIバージョン 1.0を指定する |
||||
| kind: | Yes | statementを指定する | ||||
| type: | No | resourceを指定する Ops Iの運用機能に追加する新しい定義であることを示す |
||||
| name: | Yes | Statement定義の内部名 nameは以下のルールに従う必要があります。
|
||||
| label: | Yes | YAMLファイルに記載する運用機能の表示名 | ||||
| includes: | No | このYAMLファイルで利用する関連YAMLファイルを記載
メモ
|
||||
| - kind: | Yes | 読み込むYAMLファイルの種類 | ||||
| name: | Yes | 読み込むYAMLファイルの内部名 | ||||
| description: | No | この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 または value: "https://{{.System.domain}}/対象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
メモ