• 投稿日
  • ソラコムプラットフォームがMFA (多要素認証) と新SAM記法をサポートしました

    こんにちは。ソラコムエンジニアの川上 (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) を利用しています。

    ルートアカウントでログインしている場合、ユーザーコンソールの右上のメニューから「セキュリティ」を選択すると……

    context_menu

    「多要素認証」というメニューが追加されています。

    security_page

    あとは本能の赴くままにクリックしていくと……どうでしょう、QRコードが出てくるではありませんか。

    qrcode

    これをGoogle AuthenticatorなどのMFAアプリで読み込み、出てくる認証コードを入力すると……おめでとうございます!! MFAか有効となりました。

    なおこの時に表示されるバックアプコードは 必ず 保管して下さい。無くすと万が一の時にMFAを無効化できなくなります!

    試しに認証をしてみましょう。

    login

    はい (SORACOM Discovery よろしくお願いします)。

    otp

    有効になっています、よいですね (SORACOM Discovery よろしくお願いします)。

    api

    もちろん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)