よく使われるパーミッション構文のサンプルをご紹介します。SAMの詳細は開発者向けWebサイトをご参照ください。
- 以下のパーミッション構文はあくまでサンプルです。実際にお使いになる際は事前にテストを実施くださいますようお願いいたします。
(サンプル1)「SIM管理」「課金情報」参照のみ許可するパーミッション構文
{
"statements": [
{
"api": [
"Subscriber:list*",
"Billing:*",
"Payment:get*",
"Payment:list*",
"Payment:exportPaymentStatement",
"Stats:*",
"Files:*",
"Query:searchSubscribers"
],
"effect": "allow"
}
]
}
ユーザーコンソールの検索機能強化にともない、以前に公開していた構文に加えて "Query:searchSubscribers" が追加されています。
(サンプル2)SIM管理画面の参照、監視情報の参照・更新のみ許可するパーミッション構文
{ "statements": [ { "api": [ "EventHandler:*", "Subscriber:listSubscribers", "Query:searchSubscribers" ], "effect": "allow" } ] }
ユーザーコンソールの検索機能強化にともない、以前に公開していた構文に加えて "Query:searchSubscribers" が追加されています。
(サンプル3)Harvestのデータの参照のみ許可するパーミッション構文
{ "statements": [ { "api": [ "Subscriber:getDataFromSubscriber", "LoraDevice:getDataFromLoraDevice", "SigfoxDevice:getDataFromSigfoxDevice", "DataEntry:getDataEntries", "DataEntry:getDataEntry" ], "effect": "allow" } ] }
(サンプル4)サポート問い合わせのみ不可・他のAPIは全て許可するパーミッション構文
{ "statements": [ { "api": "*", "effect": "allow" }, { "api": [ "Operator:generateSupportToken" ], "effect": "deny" } ] }
(サンプル5)全てのAPIを許可するパーミッション構文
{ "statements": [ { "api": "*", "effect": "allow" } ] }
(サンプル6)SAMユーザーが自分自身のパスワードのみを変更することを許可するパーミッション構文
{ "statements":[ { "effect":"allow", "api": "User:updateUserPassword", "condition": "pathVariable('user_name') == samUserName" } ] }
(サンプル7)特定の IMSI に対する使用開始、休止へのステータス変更とセッション切断を許可、また SIM 管理画面の参照、SIM の検索を許可するパーミッション構文
{ "statements":[ { "api":[ "Subscriber:activateSubscriber", "Subscriber:deactivateSubscriber", "Subscriber:deleteSubscriberSession", "Subscriber:getSubscriber" ], "effect":"allow", "condition":"pathVariable('imsi') == '対象の IMSI 番号'" }, { "api":[ "Subscriber:listSubscribers", "Query:searchSubscribers" ], "effect":"allow" } ] }
現在の SAM の機能では SIM グループやデバイスグループ単位で閲覧の可否を制御することはできません。これは、一覧の取得に使用する API Subscriber:listSubscribers / Device:listDevices といった API のパスに {user_name} や {group_id}といったプレースホルダーが含まれないためです。したがって、一覧系 API はすべて有効か無効かの選択のみとなります。また、SIM グループをユーザーコンソールで編集する場合は画面表示の際に使用するため Group:listGroups の許可が必要です。
以下のようにパスにプレースホルダーが含まれる API は pathVariable() 関数を使用して細かな制御ができます。
- Subscriber:getSubscriber /subscribers/{imsi}
- Device:getDevice /device/{device_id}
- Device:executeDeviceResource /devices/{device_id}/{object}/{instance}/{resource}/execute
(サンプル8)アカウント削除、発注、SIMの解約、SIMの登録以外を許可する状態のパーミッション構文
{
"statements": [
{
"api": "*",
"effect": "allow"
},
{
"api": [
"Billing:*",
"Operator:*",
"Order:*",
"Payment:*",
"PortMapping:*",
"Role:*",
"Subscriber:registerSubscriber",
"Subscriber:deactivateSubscriber",
"Subscriber:enableTermination",
"Subscriber:setImeiLock",
"Subscriber:setSubscriberToStandby",
"Subscriber:suspendSubscriber",
"Subscriber:terminateSubscriber",
"Subscriber:setExpiryTime",
"User:*",
"VirtualPrivateGateway:*"
],
"effect": "deny"
}
]
}
(サンプル9)SORACOM Harvest Files の特定のパス以下の閲覧・ダウンロード・アップロードを許可
{
"statements": [
{
"effect": "allow",
"api": "FileEntry:listFiles",
"condition": "pathVariable('path') matches 'firmware/versions'"
},
{
"effect": "allow",
"api": "FileEntry:getFile",
"condition": "pathVariable('path') matches 'firmware/versions/.*'"
},
{
"effect": "allow",
"api": "FileEntry:putFile",
"condition": "pathVariable('path') matches 'logs/:imsi/.*'"
}
]
}