#SORACOM で読み取り専用のユーザーを作成する
ども、大瀧です。
IoTプラットホームサービスSORACOMで、SORACOM APIおよびWebコンソールの操作を制限するSAM(SORACOM Access Management)機能がリリースされました。
今回はSAMの活用で一度は通るであろう、リードオンリーユーザーの設定例をご紹介します。
SORACOMのSAMは、ユーザーコンソールおよびAPIなど管理目的で利用するための仕組みです。Air SIMによるデータ通信やSORACOM Beamなどの各サービスの認証とは関係無く、SIMがあればSAMユーザーの設定なしで各サービスが利用できます。
SAMのパーミッション構文
SAMの権限はJSON形式のパーミッション構文に従い、SORACOM APIの単位で設定します。詳細は以下ドキュメント/リファレンスを参照ください。
SORACOM APIはRESTful APIなので、リードオンリー権限は概ねGET
に対応すると考えます。一部まとまったデータをエクスポートするAPIがPOST
なので、それらを補う形がよさそうです。以下のようにしてみました。
{ "statements":[ { "effect":"allow", "api":"*", "condition":"httpMethod == 'GET'" }, { "effect":"allow", "api":[ "Billing:exportLatestBilling", "Billing:exportBilling", "Stats:exportAirStats", "Stats:exportBeamStats" ] } ] }
- 3-7行目 : 全APIをGETのみ許可
- 8-16行目 : 4つのAPIはHTTPメソッドを制限せずに許可
注意 : SORACOMのサービス追加やAPIの仕様変更によって、追加するべき権限が増える可能性もあります。
設定手順
公式ドキュメントに沿って進めて行きます。
1. SAMユーザーの作成
まずは設定するSAMユーザーを作成します。SORACOMユーザーコンソールにログインし、メニューから[セキュリティ] - [ユーザー]を選択、[+ ユーザー作成]をクリックします。
ユーザーの[名前]、[概要]を入力し、[作成]をクリックします。
2. 権限、パスワードの設定
続いて、作成したSAMユーザーに権限とパスワードを設定します。ユーザー一覧から作成したSAMユーザーをクリックし、[権限設定]タブを表示、[直接指定]のテキストボックスにさきほどのJSONテキストをペーストします。
直接指定する他に、SAMには複数のユーザーにまとめて権限を設定するロールという仕組みもあるので、メンテナンス性を考慮してロールに権限を設定しても良いでしょう。
続いて、ユーザーコンソールにログインできるよう、パスワードを設定します。[認証設定]タブから[パスワード設定]ボタンをクリックします。
パスワード文字列を2回入力し、[設定]をクリックすればOKです。
あと、このあとのSAMユーザーの動作確認のために、アカウントのオペレータIDが必要です。画面右上のアカウント名(メールアドレス)をクリックして確認できます。メモしておきましょう。
動作検証
それでは、実際にログインして動作を確認してみます。先ほどまで開いていたユーザーコンソールからログアウトするか、別のブラウザからユーザーコンソールのログイン画面にアクセスします。SAMユーザーでのログインは、右上の[SAMユーザーとしてログイン]をクリックするかURLhttps://console.soracom.io/#/sam_loginに直接アクセスします。
[オペレータID]と、作成した[ユーザー名]、[パスワード]をそれぞれ入力し、ログインします。
正常にログインできること、SIM一覧など一連の情報が表示されることが確認できます。一方で、SIMを選択し[操作] - [休止] - [ステータスを変更する]など、設定変更を実行しようとするとエラーになることがわかります。
意図した通り、リードオンリーの権限になっていることがわかりますね。
まとめ
SORACOMの制限ユーザーであるSAMユーザーでリードオンリーの権限を設定する例を紹介しました。 企業/組織などでSORACOMを管理・運用していく際にはSAMを積極的に活用していきましょう!