AWS SESのためにユーザーを作成する

AWS

はじめに

「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初版公開

コメント

タイトルとURLをコピーしました