はじめに
「AlexaスキルからEメールを送信する」の記事で、AWS Simple Email Service (SES)を使って、Eメールを送信する方法を紹介しました。
その中でSESのAPIアクセス用にAWS IAMサービスを使ってSES用のユーザーを作成しまたが、詳細については省略しました。IAMによるユーザー作成はAWSの基本操作の1つであることと、筆者はAWSについてはにわかユーザーであることから、解説めいた物を書くのは気が引けたからです。
とは言え、このサイトは自分自身の備忘録でもあるので、ここに書き残すことにしました。
(正直、正確さには欠けるとは思いますが …)
何故SES用のユーザーが必要か
ユーザーがAWSにアカウントを作成すると、デフォルトでAdministrator
というユーザーが作成され、AWSの全ての機能にアクセスできる管理者となります。
このAdministrator
の認証情報をスキルに埋め込めば、スキルからSESを含むAWSの全ての機能を使うことができます。しかしこれはセキュリティ的にはリスクの高い状態です。認証情報の漏洩や、スキルによる予期せぬ操作の発生、といった事態が懸念されます。
こうしたリスクを低減するために、SESの機能のみを実行できるユーザーを別途作成し、このユーザーの認証情報を使って、スキルからSESの機能へアクセスするようにします。これにより、もし問題が発生しても、影響はSESに関連したものに限定できます。
SESユーザー作成の概要
AWSのセキュリティモデルでは、誰がどのリソースに何をできるかを定義します。このうち「どのリソースに何をできるか」の部分を定義するのがポリシーです。
SESの機能へのアクセス権限を定義するために、AlexaSkillMailAccess
というポリシーを作成し、以下の2つの権限を含めます。
- ses:SendMail
- ses:SendRawEmail
次に「誰が」の部分、つまりSESへのアクセス権限を持たせるユーザーとして、AlexaSkillMailSender
というユーザーを作成し、そこにポリシーAlexaSkillMailAccess
をアタッチします。これにより、ユーザーAlexaSkillMailSender
は、SESに対してEメールの送信権限のみを持つようになります。
実際のSES機能へのアクセスは、ユーザーの持つ認証情報を使って許可されます。この認証情報は下記の2つの項目からなります。
- アクセスキーID
- シークレットアクセスキー
この認証情報は1つのユーザーに複数作成できます。
ここまで説明してきた、ユーザー、ポリシー、認証情報の関係を下図に示します。
今回はポリシーを直接ユーザーにアタッチしていますが、グループを介してアタッチすることもできます。こうした階層構造を取ることで、誰にどのような権限を付与するのかを、柔軟に管理できるようになっています。
作成手順
ポリシーの作成
AWSのダッシュボードにログインし、左側のメニューからポリシー
をクリックします。ポリシーの一覧が表示されるので、ポリシーの作成
をクリックします。
ポリシーの作成画面から、サービス
、アクション
、ソリース
を選択します。
定義内容はタブを切り替えてJSON形式でも見ることもできます。
次のステップ:タグ
ボタンをクリックします。
タグは必要ありません。
次のステップ:確認
ボタンをクリックします。
「ポリシーの確認」画面で、名前
を記入します。
ポリシーの作成
ボタンをクリックします。
作成結果が表示されます。ポリシー一覧に、AlexaSkillMailAccess
が追加されていることを確認します。
ユーザーの作成
AWSのダッシュボードにログインし、左側のメニューからユーザー
をクリックします。ユーザーの一覧が表示されるので、ユーザーを追加
をクリックします。
「ユーザー詳細の設定」画面で、ユーザー名を記入します。
アクセスの種類から、プログラムによるアクセス
を選択し、スキルからSESへのアクセスに使うアクセスキーID
、シークレットアクセスキー
を有効にします。今回はスキルからのアクセス用なので、マネジメントコンソールへのアクセスは不要です。
次のステップ:アクセス権限
ボタンをクリックします。
「アクセス許可の設定」画面で、先程作成したAlexaSkillMailAccess
ポリシーを選択します。
次のステップ:タグ
ボタンをクリックします。
タグは必要ありません。
次のステップ:確認
ボタンをクリックします。
「確認」画面が表示されます。
ユーザーの作成
ボタンをクリックします。
ユーザーが追加され、アクセスキーID
、シークレットアクセスキー
が表示されます。
シークレットアクセスキー
はこの画面でしか見られません。後から確認することはできないので注意が必要です。CSVファイルでも提供されているので、ダウンロードしておきましょう。
結果が表示されます。ユーザー一覧にAlexaSkillMailSender
が追加されていることを確認します。
おわりに
スキルからAmazon Simple Email Service (SES)にアクセスするための、ユーザーとポリシーの作成について紹介しました。
備忘録なので知見と言えるものはありません。せめてデタラメを書かないようにと、少しIAM周りを勉強したので、そこが筆者個人としては収穫かも知れません。
変更履歴
日付 | 内容 |
2021/04/22 | 記述を追加・改良 |
2021/04/03 | 初版公開 |