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の画面でロールを選択し、右ペイン上部の[ロールの作成]をクリックします。
最初の画面、「信頼されたエンティティの種類を選択」にて、「別のAWSアカウント」を選択します。
アカウントIDの部分には、公式ページに記載の通り、ソラコムさんのアカウントIDを入力します。
ガバレッジごとに違うので、注意です。
アカウントIDを入力します。SIMグループのカバレッジに応じて以下のとおり入力します。
日本カバレッジ: 762707677580
グローバルカバレッジ: 950858143650
利用するSIMは日本カバレッジのSIMグループに属するSIMなので、 762707677580
を入力します。
外部ID(External ID)を設定します。
前述したassumeRole時に、パラメータとして、外部ID(--external-id)を指定することで、より強固に権限委任ができます。
外部に漏れないようにご注意ください。
ああ、きっとFunkの中で、AWSのSDKのassumeRoleを実行していると思うんですが、その際パラメータにexternalId指定してるんでしょうねぇ・・・って思った人です。
次の画面では、ポリシーをアタッチします。すでに用意されているのであれば、既存のポリシーを検索して、それをアタッチします。
ない場合は、[ポリシーの作成]をクリックして、ポリシーの作成を行います
(別ダブで開くので、ロールの画面はそのままで!)
画面で作成もできますが、JSON貼り付けの方が楽かなと思います。
JSONタブを選ぶと、入力フィールドが出てくるので、以下のJSONを貼り付けます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "soracomFunkRole",
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": "*"
}
]
}
このロールではLambdaが実行できる権限さえあればいいので、lambda:InvokeFunction
がAllow(許可)
されていればOKです。(今までもそうだったはず)
Resource
が "*"
なっていますが、ベストプラクティス的には、個別のLambdaを指定した方がいいでしょうね。
あとは、確認画面で、名前と説明(いれなくてもいいです)をいれて、完了です。
ロールの作成画面に戻って、作ったポリシーを検索して、アタッチします。出てこないようなら、[リロードボタン]を押してみましょう。
こちらも確認画面で、名前と説明(いれなくてもいいです)をいれて、完了です。
次はSORACOM側です。
SORACOM側
認証情報の登録は、
- SIMグループ設定のSORACOM Funkの画面で登録
- セキュリティ設定画面の認証情報ストア
で設定可能です。
種別で「AWS IAMロール認証情報」を選ぶと、ロールのARNと外部IDを入力するフィールドが出てきます。
認証情報ID、コピーしたロールのARN
とロール作成時に設定した外部ID
を入力します。
作成が終わったら、
Funkの設定画面で、認証情報
として作成したAWS IAMロール認証情報
を指定して保存すればOKです。
あとは、設定したSIMグループにいるデバイスから、Funk経由でAWS Lambdaが呼び出せればOKです!
簡単ですね!
まとめ
もともと、FunkからLambdaを呼び出す際は、Lambdaの実行権限(invokeFunction)があればいいはずなので、
設定してあるアクセスキー、シークレットキーが何らかの要因で漏洩したとしても大きな影響はないと思いますが、
今回のIAMロール認証機能により、よりセキュアにFunkからLambdaを実行できるようになりました。
設定自体も簡単ですので、積極的にIAMロール認証機能に使っていきたいと思います。
まだ全部設定変更かけてないので、早急に設定変更する予定です。
終わり
ソラコムさん、来月には大規模イベントも控えていますが、どんな新サービスが発表されるのか期待しかないですねー。