LoginSignup
1
0

More than 1 year has passed since last update.

SORACOM FunkのIAMロール認証情報対応を試す

Posted at

SORACOMで好きなサービスはSORACOM Funkな人です。


2021/5/21に、SORACOM Funkに以下のアップデートがありました。
SORACOM FunkがIAMロール認証情報に対応、AWSのベストプラクティスに沿ったAWS Lambdaの実行が可能となりました

今までは、認証情報ストアに、IAMユーザーのアクセスキーとシークレットキーを登録して呼び出していたのですが、
IAMのAssume Roleを使った認証方法に変わったということで、早速変更してみました。

IAMロール認証機能って?

AWSの公式ドキュメントはこちら
これによってできるのが、AssumeRoleによる権限委譲ですね。

Assume Roleって?

Amazon STSの機能の1つで、IAMロールを他のアカウントなど、第三者に委任させる機能です。
なお、IdPプロバイダーを使ったSAML連携もありまして、
Assume Role With SAML と呼ばれています。

複数アカウント持っている場合などで、

設定してみる

では設定してみましょう。
※ここで出てくる画面は2021年5月現在のものになります。

AWS側

AWSコンソールのIAMの画面でロールを選択し、右ペイン上部の[ロールの作成]をクリックします。
スクリーンショット 2021-05-12 21.21.09.png

最初の画面、「信頼されたエンティティの種類を選択」にて、「別のAWSアカウント」を選択します。
スクリーンショット 2021-05-12 21.21.19.png
スクリーンショット 2021-05-12 21.21.32.png

アカウントIDの部分には、公式ページに記載の通り、ソラコムさんのアカウントIDを入力します。
ガバレッジごとに違うので、注意です。

アカウントIDを入力します。SIMグループのカバレッジに応じて以下のとおり入力します。
日本カバレッジ: 762707677580
グローバルカバレッジ: 950858143650

利用するSIMは日本カバレッジのSIMグループに属するSIMなので、 762707677580 を入力します。

スクリーンショット 2021-05-25 12.00.43.png

外部ID(External ID)を設定します。
前述したassumeRole時に、パラメータとして、外部ID(--external-id)を指定することで、より強固に権限委任ができます。
外部に漏れないようにご注意ください。
ああ、きっとFunkの中で、AWSのSDKのassumeRoleを実行していると思うんですが、その際パラメータにexternalId指定してるんでしょうねぇ・・・って思った人です。

スクリーンショット 2021-05-25 11.40.42.png

次の画面では、ポリシーをアタッチします。すでに用意されているのであれば、既存のポリシーを検索して、それをアタッチします。
ない場合は、[ポリシーの作成]をクリックして、ポリシーの作成を行います
(別ダブで開くので、ロールの画面はそのままで!)
スクリーンショット 2021-05-12 21.42.10.png

画面で作成もできますが、JSON貼り付けの方が楽かなと思います。
スクリーンショット 2021-05-12 21.42.32.png

JSONタブを選ぶと、入力フィールドが出てくるので、以下のJSONを貼り付けます。
スクリーンショット 2021-05-25 12.13.57.png

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "soracomFunkRole",
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "*"
        }
    ]
}

このロールではLambdaが実行できる権限さえあればいいので、lambda:InvokeFunctionAllow(許可)されていればOKです。(今までもそうだったはず)
Resource"*"なっていますが、ベストプラクティス的には、個別のLambdaを指定した方がいいでしょうね。

スクリーンショット 2021-05-12 21.42.56.png

あとは、確認画面で、名前と説明(いれなくてもいいです)をいれて、完了です。

スクリーンショット 2021-05-12 21.44.25.png
スクリーンショット 2021-05-12 21.45.54.png

ロールの作成画面に戻って、作ったポリシーを検索して、アタッチします。出てこないようなら、[リロードボタン]を押してみましょう。
スクリーンショット 2021-05-12 21.47.34.png
スクリーンショット 2021-05-12 21.47.59.png

こちらも確認画面で、名前と説明(いれなくてもいいです)をいれて、完了です。
スクリーンショット 2021-05-12 21.49.29.png

完成したら、できたロールのARNをコピーしておきましょう。
スクリーンショット 2021-05-12 21.52.06.png

次はSORACOM側です。

SORACOM側

認証情報の登録は、
- SIMグループ設定のSORACOM Funkの画面で登録
- セキュリティ設定画面の認証情報ストア
で設定可能です。

種別で「AWS IAMロール認証情報」を選ぶと、ロールのARNと外部IDを入力するフィールドが出てきます。
スクリーンショット 2021-05-12 21.53.50.png

認証情報ID、コピーしたロールのARNとロール作成時に設定した外部IDを入力します。
スクリーンショット 2021-05-12 21.54.27.png

作成が終わったら、
Funkの設定画面で、認証情報として作成したAWS IAMロール認証情報を指定して保存すればOKです。
スクリーンショット 2021-05-12 22.01.24.png

あとは、設定したSIMグループにいるデバイスから、Funk経由でAWS Lambdaが呼び出せればOKです!

簡単ですね!

まとめ

もともと、FunkからLambdaを呼び出す際は、Lambdaの実行権限(invokeFunction)があればいいはずなので、
設定してあるアクセスキー、シークレットキーが何らかの要因で漏洩したとしても大きな影響はないと思いますが、
今回のIAMロール認証機能により、よりセキュアにFunkからLambdaを実行できるようになりました。
設定自体も簡単ですので、積極的にIAMロール認証機能に使っていきたいと思います。
まだ全部設定変更かけてないので、早急に設定変更する予定です。

終わり

ソラコムさん、来月には大規模イベントも控えていますが、どんな新サービスが発表されるのか期待しかないですねー。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0