こんにちは。ソラコムエンジニアの川上 (moz) です。そして私はmoznionでもあります。
本日はセキュリティに関するリリーストピックが2つありそれをブログをしたためている次第です。こうして皆さんにお伝えできることに、私はたいへん興奮しています!
トピックは以下の2つです:
- Email addressとPasswordを用いた認証においてMFA (Multi-Factor Authentication/多要素認証) に対応しました
- 新しいSAM記法
pathVariable()
とsamUserName
をサポートしました
Email addressとPasswordを用いた認証においてMFA (Multi-Factor Authentication/多要素認証) に対応しました
表題のとおり、Email addressとPasswordを用いた認証においてMFAに対応しました。RFC 6238で定義されている時間ベースのワンタイムパスワード (TOTP) を利用しています。
ルートアカウントでログインしている場合、ユーザーコンソールの右上のメニューから「セキュリティ」を選択すると……
「多要素認証」というメニューが追加されています。
あとは本能の赴くままにクリックしていくと……どうでしょう、QRコードが出てくるではありませんか。
これをGoogle AuthenticatorなどのMFAアプリで読み込み、出てくる認証コードを入力すると……おめでとうございます!! MFAか有効となりました。
なおこの時に表示されるバックアプコードは 必ず 保管して下さい。無くすと万が一の時にMFAを無効化できなくなります!
試しに認証をしてみましょう。
はい (SORACOM Discovery よろしくお願いします)。
有効になっています、よいですね (SORACOM Discovery よろしくお願いします)。
もちろんAPI経由でもご利用いただけます。やりましたね。
MFA機能の詳細につきましては以下のドキュメントをご参照ください。
新しいSAM記法 pathVariable()
と samUserName
をサポートしました
さて上級者の間でコアな人気を博しているSAMですが、この度新しい記法である
pathVariable()
関数と samUserName
変数がサポートされました。
それぞれ説明していきましょう。
pathVariable()
関数はAPIのパス定義にあるプレースホルダーの値を取ってこれる関数となります。
例えば、API定義が PUT /operators/{operator_id}/users/{user_name}/password
のAPIに対して、
PUT /operators/OP9999999999/users/IoT-TARO/password
として呼び出されたとき、
pathVariable('operator_id')
は OP9999999999
となり、 pathVariable('user_name')
は
IoT-TARO
となります。
もう一方の新記法 samUserName
変数はその名の通り、SAMユーザー自身の名前が入っている変数です。
例えば IoT-TARO
という名前のSAMユーザーでログインしているとしましょう。その場合、 samUserName
には IoT-TARO
が入ることとなります。
この2つを組み合わせると非常に強力な条件を書けるようになります。例えば以下のようにSAMパーミッション構文を書くと……
{
"statements":[
{
"effect":"allow",
"api": "User:updateUserPassword",
"condition": "pathVariable('user_name') == samUserName"
}
]
}
SAMユーザーが自分自身のパスワードのみを変更することを許可できる (つまり、他SAMユーザーのパスワード変更処理は拒否する) ようになります。今までできそうでできなかった権限管理ですね。このような権限設定についてはたびたびご要望いただいていたのですが、このたびようやっと機能をお届けすることができました!
このSAM記法の更に詳しい情報につきましては以下のドキュメントをご参照ください。
https://dev.soracom.io/jp/docs/sam_permission/
というわけで今回は2つのセキュリティ関連の機能リリースについてお伝えいたしました。どうぞご利用ください!
ソラコム 川上 (moznion)