概要
GeonicDB に /me/policies エンドポイントが追加された(PR #764)。user ロールが自分専用の XACML ポリシーを作成・管理し、自分の API キー / OAuth クライアントにバインドできる。CLI 側で対応コマンドを実装する。
API 仕様
| Method |
Path |
説明 |
| GET |
/me/policies |
自分が作成したポリシー一覧(scope=personal) |
| POST |
/me/policies |
ポリシー作成(priority=100 固定、target 必須) |
| GET |
/me/policies/{policyId} |
ポリシー取得 |
| PATCH |
/me/policies/{policyId} |
ポリシー部分更新 |
| DELETE |
/me/policies/{policyId} |
ポリシー削除 |
ポリシー作成 body 例
{
"policyId": "my-readonly-policy",
"target": {
"subjects": [{"attributeId": "role", "matchValue": "api_key"}]
},
"rules": [
{
"ruleId": "permit-get",
"effect": "Permit",
"target": {
"actions": [{"attributeId": "method", "matchValue": "GET"}],
"resources": [{"attributeId": "path", "matchValue": "/v2/**"}]
}
}
]
}
制約:
priority は 100 に固定(指定不可)
scope = 'personal'(テナント全体に影響しない)
target 必須
- データ API パスのみ(
/admin/**, /me/** は不可)
CLI コマンド案
# 一覧
geonic me policies list
# 作成(JSON ファイルまたは stdin 入力)
geonic me policies create --file policy.json
# 取得
geonic me policies get <policyId>
# 更新
geonic me policies update <policyId> --file patch.json
# 削除
geonic me policies delete <policyId>
ユーザーフロー(典型的な使用例)
# 1. readonly ポリシーを作成
geonic me policies create --file readonly-policy.json
# 2. API キー作成時にポリシーをバインド
geonic me api-keys create --name "readonly-key" --allow-origin "*" --policy-id my-readonly-policy
# 3. API キーで GeonicDB にアクセス → GET のみ許可される
参考
- GeonicDB docs/AUTH.md — §Self-Service Policy Management 参照
- GeonicDB docs/INSTRUCTION.md — §14.9 /me/policies セクション参照
- OpenAPI:
/me/policies および /me/policies/{policyId}
概要
GeonicDB に /me/policies エンドポイントが追加された(PR #764)。
userロールが自分専用の XACML ポリシーを作成・管理し、自分の API キー / OAuth クライアントにバインドできる。CLI 側で対応コマンドを実装する。API 仕様
/me/policies/me/policies/me/policies/{policyId}/me/policies/{policyId}/me/policies/{policyId}ポリシー作成 body 例
{ "policyId": "my-readonly-policy", "target": { "subjects": [{"attributeId": "role", "matchValue": "api_key"}] }, "rules": [ { "ruleId": "permit-get", "effect": "Permit", "target": { "actions": [{"attributeId": "method", "matchValue": "GET"}], "resources": [{"attributeId": "path", "matchValue": "/v2/**"}] } } ] }制約:
priorityは 100 に固定(指定不可)scope = 'personal'(テナント全体に影響しない)target必須/admin/**,/me/**は不可)CLI コマンド案
ユーザーフロー(典型的な使用例)
参考
/me/policiesおよび/me/policies/{policyId}