こんにちは!クラウド型カメラサービス「ソラカメ」のセールス/事業開発を担当しております高見(ニックネーム:yuu)です。
2022年5月にサービス提供開始したクラウド型カメラサービス「ソラカメ」ですが、早くも提供開始から約1年半が経過しました。大変ありがたいことに、数百台規模でご利用頂いているお客様も増え、運用管理方法についてのご質問をいただくことが増えました。
そこで今回は、ソラカメの管理者(Admin)、ソラカメの運用者(Manager)、カメラの映像を閲覧するユーザ(User)という3つのロールを定義し、ソラコムのアクセス管理方法であるSAM(SORACOM Access Management)やソラカメのデバイス共有機能を利用して、適切な権限を設定する方法についてご紹介します。
今回利用する機能「デバイス共有」と「SAM」の関係
まず初めに、アカウント毎に閲覧できるカメラを出し分ける「デバイス共有」方法についておさらいをした後に、各アカウント毎にSAMアカウントを払い出し、権限設定することでカメラに対する操作権限を細かく設定する方法をご紹介します。
SAMとは「SORACOM Access Management」の略称で、アクセス管理を行える機能として、子アカウント作成といった権限を細かく設定できます。IDやパスワードの共有を含むアカウントの使い回しから起こる、意図していない操作を予防し、セキュリティの向上に役立ちます。
SAMの持つ権限設定はパーミッション構文と呼ばれるJSON形式の記述で、ソラコムAPIで提供している各API単位で設定することができます。本記事ではソラカメの運用に役立つ各ロールごとのパーミッション構文サンプルも掲載致します。ぜひ、ご活用下さい。
アカウント毎に映像閲覧できる対象カメラを出し分ける方法
ソラカメには、以前こちらのブログ「ソラカメのカメラ映像を複数名で共有する3つの方法」でご案内した通り、映像の共有方法は3つあります。
その中で最も多くのユーザーが利用している方法は「デバイス共有機能による、異なるオペレーター間でカメラを共有する」という方法です。下図の様に複数のオペレーター(ソラコムアカウント)を作成頂き、カメラ毎にデバイス共有設定を実施することで異なるオペレーターに任意のカメラのアクセス権限を付与することができます。
例えば、本社と支店A、Bそれぞれにソラカメを設置する場合を想像してみましょう。本社の管理者はすべてのカメラにアクセスをしたいが、支店Aの利用者は支店Aに設置したカメラのみアクセスできるようにしたい、支店Bも同様にしたいといったケースがあります。
その場合、本社と支店A, Bそれぞれでソラコムアカウントを作成します。支店側でカメラの初期設定をして支店のアカウントにカメラを紐づけたあとに、デバイス共有設定を用いて本店のアカウントにアクセス権限を付与します。こうすることで、本社はすべてのカメラにアクセスでき、支店A, Bはそれぞれ自身の支店に設置されたカメラにのみアクセスできるようになります。
詳細設定方法はこちらのユーザーガイドをご参照下さい。
オペレーター(ソラコムアカウント)の作成は無料で実施できますが、1アカウントに1つ必ずユニークなメールアドレスが必要になります。メールアドレスの使い回しはできませんので、ご注意下さい。
アカウント毎にカメラに対して操作できる権限を個別設定したい
上述の方法で、アカウント毎にアクセスできるカメラを個別に設定することができます。しかし、管理者はカメラに関する操作は制限なくできるけど、利用者にはカメラの名称変更、クラウド録画ライセンスの追加/解約、APIエクスポート上限値の変更などはさせたくないといったご要望を伺うことが多くあります。
こういった場合、ソラコムアカウントでは各アカウント毎にSAMアカウントを作成し、SAMアカウント毎にAPI単位で権限設定することが可能です。SAMの詳細についてはこちらのユーザーガイドをご参照下さい。
今回は、お客様の実際の運用をお伺いした中で、下記3つのロールを想定して各ロール毎に設定するSAMへの権限設定テンプレート(パーミッション構文)をご紹介させて頂きます。
ただし、SAMによる権限の制約はソラコムユーザーコンソールにおいてのみ有効です。ATOMアプリでの利用についてはSORACOM API経由での権限の制限ができません。予めご了承下さい。
<ロールタイプ>
- Admin
- 導入企業におけるソラカメの管理者を想定。
- すべての操作を制限なく利用できます。
- この場合は、SAMによる機能制限が不要なため、ソラコムのルートアカウントを利用されることを想定します。そのため、SAMの作成とパーミッション構文による権限設定は不要です。
- 導入企業におけるソラカメの管理者を想定。
- Manager
- ソラカメを使う現場部門の現場責任者を想定。
- ソラカメの映像や画像を閲覧でき、さらに画質やデバイス名称の変更など、日々の運用で必要な作業ができます。
- ただし、Adminとは異なり、費用に影響する操作はできません。(ソラカメのライセンスの追加/解約やAPIエクスポート上限値変更など)
- SAMへの権限設定で制御可能。ATOMアプリには元々課金に関連する操作がないため、正しく制約をかけることができます。
- ソラカメを使う現場部門の現場責任者を想定。
- User
- ソラカメの映像を確認するユーザーを想定
- ソラカメの映像や画像を閲覧することしかできません。
- 各ユーザーが自由にカメラ名称変更やライセンス割当/解除等を実施すると、運用ルールの統一が困難になるため、カメラの設定変更などはすべてManagerが実施する想定です。
- SAMへの権限設定でユーザーコンソールでの機能制約はできますが、ATOMアプリでの操作については機能制約ができません。但し、カメラの名称設定が可能です。
- ソラカメの映像を確認するユーザーを想定
アカウントとしては下図のような階層構造のイメージになります。
SAMアカウント作成と権限設定の方法
各オペレーター毎にSAMアカウントを作成することが出来ます。
手順についてはユーザーガイドをご参照下さい。リンクは下記のとおりです。
権限設定する際にパーミッション構文と呼ばれるJSON形式の記述で設定する必要があります。今回は上述の3つのロールの内、SAM権限設定を利用するManagerとUserという2つのロールのパーミッション構文を共有致します。コピー&ペーストしてご活用下さい。
なお、文末などにスペースなどが入っていると目で見えなくてもエラーになる場合があります。コピー&ペーストしてもエラーが出る場合、文末などに不要なスペースが入っていないか、ご確認下さい。
<Managerロールのパーミッション構文>
{
"statements": [
{
"effect": "allow",
"api": [
"SoraCam:*"
]
},
{
"api": [
"OAuth2:authorize"
],
"effect": "allow"
},
{
"effect": "deny",
"api": [
"SoraCam:updateSoraCamLicensePackQuantity",
"SoraCam:updateSoraCamDeviceExportUsageLimitOverride"
]
}
]
}
<Userロールのパーミッション構文>
{
"statements": [
{
"effect": "allow",
"api": [
"SoraCam:*"
],
"condition": "pathVariable('device_id') == 'xxxx' or pathVariable('device_id') == 'yyyy' or pathVariable('device_id') == 'zzzzz'"
},
{
"api": [
"OAuth2:authorize"
],
"effect": "allow"
},
{
"effect": "deny",
"api": [
"SoraCam:updateSoraCamLicensePackQuantity",
"SoraCam:updateSoraCamDeviceExportUsageLimitOverride"
]
}
]
}
Tips ATOMアプリでの操作にもUserロールの機能制約をかける方法
上記でご紹介したSAMによる権限設定には、1つ難点があります。ATOMアプリでの操作は、SAMの権限設定が及ばず、UserロールにおいてはATOMアプリでは引き続きカメラ名称の変更や設定変更が可能になってしまうことです。
もうひと手間かかってしまいますが、この”抜け道”も防ぐ方法がございますのでTipsとしてご紹介します。
それは、Userロールのアカウントについては、別のソラコムアカウントに分け、その別のアカウントでSAMアカウントを作成して、Userロールの権限設定をするという方法です。
ソラカメの仕様として、デバイス共有をされた側は、以下機能をATOMアプリでも操作することができません。複雑にはなってしまいますが、この方法でSORACOMユーザーコンソール及びATOMアプリの両方で正しくUserロールに機能制限をかけることが可能です。
- ライセンス変更(削除/割り当て)
- 名前の変更
アカウントとしては下図のような階層構造のイメージになります。
まとめ
今回は、多拠点でソラカメを導入する場合に必要となるアカウント管理と権限設定についてご紹介しました。
おさらいしますと、下記のとおりです。
- 本社と複数拠点でカメラを管理する場合は、「カメラへのアクセス権限」と「各アカウントでのカメラに対する操作権限」をどのように管理するか検討する必要がある。
- 「カメラへのアクセス権限」については、ソラカメの「デバイス共有」機能を利用することで、各拠点(=アカウント単位)で、アクセス権限を個別設定することができる。
- 「各アカウントでのカメラに対する操作権限」については、各アカウント毎にSAMアカウントを作成し、ソラカメAPIのエンドポイント単位で権限設定することで実現できる。
ただし、SAMによる制限はSORACOMユーザーコンソールでの操作に限り有効となります。 - SAMアカウントの権限設定する際に用いるパーミッション構文がわからない場合、本ブログのJSON記述をコピー&ペーストすることで、任意のロールに応じた権限設定をすることができる。
- 上述のロール以外に細かい設定がしたい場合、弊社サポートへお問い合わせ下さい。
いかがでしたでしょうか?
ソラカメの導入台数が増えてくると、運用・管理方法を整備する必要性が高まってくるのではないでしょうか?ぜひ、本ブログ記事を活用頂くことで少しでも皆様の日々の運用・管理業務が効率化できれば幸いです。
これからもクラウド型カメラサービス「ソラカメ」は、日々新機能リリースや既存機能の改善を実施して参りますので、今後とも何卒宜しくお願い致します!!
― ソラコム 高見 (yuu)