Stratus権限
デフォルト権限テンプレート
2種類のデフォルト権限テンプレートのいずれかを使用してバケットを作成できます。
-
Authenticated権限テンプレート: このデフォルト権限テンプレートを使用して作成されたバケットは、アプリケーションのクライアントポータルで認証されたユーザーのみがバケットのすべてのオブジェクトにアクセスできることを規定します。
-
Public権限テンプレート: このデフォルト権限テンプレートを使用して作成されたバケットは、インターネット上のすべてのエンドユーザーが認証要件なしにバケットのオブジェクトにアクセスできるようにします。
-
両方の権限テンプレートは、バケットを作成する際に選択する必要があるデフォルトタイプです。これらのテンプレートは編集可能で、バケットに保存された個々のオブジェクトの権限も編集できます。
-
設定された権限はプロジェクトユーザーにのみ適用され、コラボレーターには適用されません。
-
これらの権限はエンドユーザーのアクセスレベルを定義するためのものであり、CollaboratorsやAdministratorsのためのものではありません。コラボレーターのアクセスレベルはProfiles & Permissionsセクションで定義できます。
-
選択した権限テンプレートに関係なく、バケット内のuploadアクションは認証されたユーザーのみが実行できます。
カスタム権限
バケットを作成する際に、デフォルトの権限テンプレート(AuthenticatedまたはPublic)を選択する必要があります。選択に基づいてデフォルトの権限テンプレートが読み込まれ、バケットが作成されます。これに加えて、選択した権限テンプレートに関係なく、シンプルなJSONコードを使用して個々のオブジェクトごとの権限を定義したり、サブディレクトリ全体の権限を定義したりできます。
選択に基づいて読み込まれるデフォルトの権限テンプレートを以下に示します:
デフォルトAuthenticated権限テンプレート
{
"rules": [
{
"rule_id": "AuthenticatedBucket_Rule1",
"condition": {
"user": {
"auth_type": "authenticated",
"zuid": "*"
}
},
"allowed_actions": [
"GetObject"
],
"paths": [
"vendorstats::/*"
],
"effect": "allow"
}
],
"version": "v1"
}
デフォルトPublic権限テンプレート
{
"rules": [
{
"rule_id": "PublicBucket",
"condition": {
"user": {
"auth_type": "public"
}
},
"actions": [
"GetObject"
],
"paths": [
"zylker-bucket-pubs::/*"
],
"effect": "allow"
}
],
"version": "v1"
}
両方の権限テンプレートを効果的に編集し、カスタム権限を使用するには、以下のJSONキーとその目的を理解する必要があります:
| JSONキー名 | 目的 |
|---|---|
| rules |
|
| rule_id |
|
| effect |
|
| allowed_actions |
|
| paths |
|
| condition | このJSONキーは、アクションが発生する条件を定義します。 |
| user |
このJSONキーはconditionキー内で使用され、定義される条件が適用されるユーザーまたはユーザーセットを指定します。
注意: ユーザーIDに基づくアクセスは、zuid values JSONキーと値のペアまたはorg_details JSONのいずれかを使用して決定できます。両方を使用してユーザーアクセスを定義することはできません。
|
| Operators | 条件の適用・不適用のケースを定義するのに役立つJSONキーです。 |
| string_equals | 文字列値が等しい場合に発生するアクションを指定します。 |
| string_not_equals | 文字列値が一致しない場合に発生するアクションを定義します。 |
| string_equals_ignore_case | 使用される大文字・小文字に関係なく文字列値が一致できるアクションを定義します。 |
| string_not_equals_ignore_case | 使用される大文字・小文字に関係なく文字列値が一致しない場合に発生するアクションを定義します。 |
| string_like | 文字列値の一部が指定したキーと一致する場合、オブジェクトに対してアクションを実行できます。 |
| string_not_like | 文字列値の一部が指定したキーと一致しない場合、オブジェクトに対してアクションを実行できます。 |
| ip_address | 許可している特定のIPからリクエストが送信された場合のアクションを定義します。 |
| not_ip_address | 特に停止しているIPからリクエストが送信された場合に発生するアクションを定義します。 |
| Condition Keys | |
| referrer | このJSONキーには、アクションが要求された完全なURLの値が含まれます。値は配列として提供する必要があります。例えば、マイクロサービスを作成し、Catalyst AppSailでホストしたとします。referrerの値はこのマイクロサービスの完全なURLとなり、権限はこのマイクロサービスに関連するアクションのみに定義されます。このキーは以下の演算子で使用されます:
|
| user_agent | このJSONキーには、リクエストが行われたソースの値が含まれます。値は配列として提供する必要があります。リクエストのソースがAPI、ブラウザなどであるかどうかを示します。このキーは以下の演算子で使用されます:
|
| source_ip | このJSONキーには、公開されているIPアドレスの値のみが含まれます。値は配列として提供する必要があります。特定のIPからのアクションを許可または拒否する権限を定義するのに役立ちます。このキーは以下の演算子で使用されます:
|
| version |
|
動的変数
権限を設定する際に、動的変数を使用してオブジェクトパスを定義できます。実行時に、これらの変数はオブジェクトのパスを定義する関連値を保持します。Stratusでは、以下の動的変数を使用してパスを定義できます:
- X_ZUID: 実行時に実際のUserIDsを保持します。
- X_ORGID: 実行時に実際のOrgIDsを保持します。
動的変数を作成する構文
動的変数を使用するには、以下の構文を使用する必要があります:
“paths”: [“bucket_name::/${var:X_ZUID}/*”]
“paths”: [“bucket_name::/${var:X_ORGID}/*”]
-
paths: オブジェクトのパスの値を保持します
-
bucket_name: バケットの名前の値を保持します
動的変数を使用する構文
以下の例では、X_ZUID動的変数を使用してオブジェクトのパスを定義しています
{
"version": "v1",
"rules": [
{
"rule_id": "Example rule to allow user to access the path which has their ZUID in the path",
"condition": {
"user": {
"auth_type": "authenticated",
"zuid": "*"
}
}
}
],
"effect": "allow",
"allowed_actions": [
"GetObject"
],
"paths": [
"bucketName::/${var:X_ZUID}" //Use the X_ORGID variable to define the path using OrgIDs
]
}
- 動的変数は、権限テンプレートが全体的にAuthenticatedに設定されているバケットで使用するのが最適です。
カスタム権限を示す例
ここでは、バケット内のオブジェクトの権限を定義するために作成できるカスタム権限テンプレートの例をいくつか見ていきましょう。
例1
{
"version" : "v1",
"rules" : [
{
"rule_id" : "Example rule where all authenticated ZUID users can perform all actions on a particular object",
"effect" : "allow",
"allowed_actions" : ["GetObject", "PutObject", "DeleteObject"],
"paths" : ["bucketName::/user/*", "bucketName::/document/readme.md"],
"condition" : [
"user" : {
"auth_type" : "authenticated",
"zuid" : "*"
}
]
}
]
}
上記のスニペットから、以下のことがわかります:
-
権限はauthenticated権限テンプレートバケットに設定されています
-
ユーザーがGetObject、PutObject、およびDeleteObject操作を実行できるように権限が定義されます。
-
この権限は、user/パスに存在するすべてのオブジェクトにのみ適用され、バケット内のdocument/パスに存在するreadme.mdオブジェクトにのみ適用されます。
-
権限はすべてのZUIDに対して有効です。
これらをまとめると、上記の権限は、すべての認証されたユーザーがdocument/パスに存在するreadme.mdオブジェクトおよびuser/パスに存在するすべてのオブジェクトに対してすべてのアクションを実行するために定義されていることがわかります。
例2
{
"version" : "v1",
"rule" : [
{
"rule_id" : "Example rule to allow user to access the path which has their ZUID in the path",
"effect" : "allow",
"allowed_actions" : ["GetObject"],
"paths" : ["bucketName::/${var:X_Zuid}"],
}
]
}
上記のスニペットから、以下のことがわかります:
-
オブジェクトのパス名はZUIDに基づいて定義され、その値は実行時に動的に取得されます。
-
パス内の特定のオブジェクトに対してGetObjectアクションの実行が許可されます。
これらをまとめると、上記の権限は、動的に取得されるZUID値と名前が一致するオブジェクトに対してGetObjectアクションが実行されるように定義されていることがわかります。
例3
{
"version" : "v1",
"rule" : [
{
"rule_id" : "Example rule to deny specific users from accessing all the objects present in a particular path",
"effect" : "deny",
"allowed_actions" : ["GetObject", "PutObject", "DeleteObject"],
"paths" : ["bucketName::/denyPath/*"],
"condition" : {
"user" : {
"auth_type" : "authenticated",
"zuid" : ["123", "456", "789"]
}
}
}
]
}
上記のスニペットから、以下のことがわかります:
-
権限は、ZUIDが配列としてリストされている特定の認証されたユーザーに適用されます。
-
特定のユーザーはバケット内のすべてのオブジェクトに対してGetObject、PutObject、またはDeleteObjectアクションを実行できません。
これらをまとめると、上記の権限は指定されたZUIDを持つ認証されたユーザーに対して定義されていることがわかります。指定されたユーザーは特定のパスに存在するすべてのオブジェクトに対してアクションを実行することが許可されていません。
例4
{
"version" : "v1",
"rule" : [
{
"rule_id" : "Example rule employing specific action for specific public paths in the bucket",
"effect" : "allow",
"allowed_actions" : ["GetObject"],
"paths" : ["bucketName::/publicPath/*", "bucketName::/otherPath/otherPublicPath/*"],
"condition" : {
"user" : {
"auth_type" : "public",
}
}
},
{
"rule_id" : "Example rule where specifc actions can be performed on objects present in specific authenticated path, and these actions can be performed by all authenticated users",
"effect" : "allow",
"allowed_actions" : ["GetObject", "PutObject", "DeleteObject"],
"paths" : ["bucketName::/authenticatedUser/*", "bucketPath::/otherProtectedPath/*"],
"condition" : {
"user" : {
"auth_type" : "authenticated",
"zuid" : "*"
}
}
}
]
}
上記のスニペットから、以下のことがわかります:
-
このバケットに対して2つのルールが定義されています。バケット内の特定のパスはpublicとしてリストされ、バケット内の特定のパスはauthenticatedユーザーのみがアクセスできます。
-
publicパスに該当するオブジェクトに対して実行できるアクションはGetObjectのみです。ただし、authenticatedパスにあり、認証されたユーザーのみがアクセスできるオブジェクトについては、authenticatedパスで許可されるアクションはGetObject、PutObject、およびDeleteObjectです。
これらをまとめると、上記の権限は2つのルールで定義されていることがわかります。最初のルールは、パス内のすべてのオブジェクトがpublicであるため誰でもアクセスできるパスの権限を定義します。publicパス内のオブジェクトに対して実行できるアクションはGetObjectのみです。
2番目のルールでは、すべての認証されたユーザーがauthenticatedパスにリストされているすべてのオブジェクトに対してGetObject、PutObject、およびDeleteObjectアクションを実行できます。
例5
{
"version" : "v1",
"rules" : [
{
"rule_id" : "RuleNumber1",
"effect" : "allow",
"allowed_actions" : ["GetObject", "PutObject"],
"paths" : ["bucketname::/protectedpath/*"],
"condition" : {
"user" : {
"auth_type" : "authenticated",
"zuid" : "*"
},
"string_equal" : {
"user_agent" : ["Mozilla/5.0"],
"referrer" : ["https://www.example.com", "https://www.example.com/get_user/"]
},
"ip_address" : {
"source_ip" : ["121.67.8.1"]
}
}
},
{
"rule_id" : "RuleNumber2",
"effect" : "deny",
"allowed_actions" : ["GetObject"],
"paths" : ["bucketname::/denypath/*"],
"condition" : {
"user" : {
"auth_type" : "authenticated"
},
"string_like" : {
"user_agent" : ["PostmanRuntime/7.39.0"]
}
}
},
{
"rule_id" : "RuleNumber3",
"effect" : "allow",
"allowed_actions" : ["PutObject"],
"paths" : ["bucketname::/uploadhere/*"],
"condition" : {
"user" : {
"auth_type" : "authenticated",
"org_details" : {
"zaaid" : ["12096000001275047", "12096000001278879"] }
},
"not_ip_address" : {
"source_ip" : ["122.23.44.19"]
}
}
}
]
}
上記のスニペットから、RuleNumber1、RuleNumber2、およびRuleNumber3の3つのルールが定義されていることがわかります。
-
RuleNumber1
- オブジェクトへのアクセスは、アクセスを試みるシステムのIPアドレスがip_address JSON内のsource_ipにリストされている値と一致する場合のみ可能です。
- オブジェクトへのアクセスは、zaaid(User IDs)がorg_details JSON内にリストされているものと一致するユーザーのみが可能です。
- オブジェクトへのアクセスは、Webからのアクセス試行がMozillaブラウザによるものであり、アクセス要求が記載されたreferrersから発信された場合のみ可能です。
- ルールはすべての認証されたユーザーに対して定義されています。
- アクセス要求が上記のすべての条件を満たす場合、定義されたパスではGetObjectおよびPutObjectアクションのみが許可されます。
-
RuleNumber2
- ルールは、user_agentがPostman(Postman APIプラットフォームを使用してリクエストが行われた)であるアクセス要求を試みる認証されたユーザーに対して定義されています。
- 定義されたパスでは、そのようなユーザーはGetObject操作の実行を拒否されます。
-
RuleNumber3
- ルールは、not_ip_address JSON内のsource_ipに記載されたIPアドレスを除く任意のIPアドレスからリクエストが行われた場合に適用されるように定義されています。
- ルールは認証されたユーザーのみに適用され、特にorg_details JSONで定義されたzaaidを持つユーザーに適用されます。
- ユーザーが上記のすべての条件を満たすアクセス要求を試みた場合、定義されたパスでPutObjectを実行することが許可されます。
バケットに保存されたオブジェクトのカスタム権限設定
カスタム権限を設定するには:
権限が設定に従って適用されます。
最終更新日 2026-03-05 11:43:24 +0530 IST
Yes
No
Send your feedback to us



