Appendix:AWSサービスやリソースへのアクセスを安全に制御するために
制作1日目ではゲストユーザーがAmazon KinesisやAmazon DynamoDBにアクセスできるように、制作2日目ではAWS Lambdaを利用するためにIAMロールを作成しました。
IAMロールは、AWS Identity and Access Management(IAM)で利用するエンティティの1つです。AWS IAMは、AWSのサービスやリソースへのアクセスを安全に制御するための手段を提供します。
なぜAWS IAMが必要なの?
AWSアカウントを作成し、サインアップすると、そのアカウントで利用可能なすべてのAWSサービスおよびリソースにアクセスできます。しかし、用途によって必要なAWSサービスやリソースは限定されます。たとえば、スマホフレーフレー言語応援アプリの開発でも、一部のAWSサービスしか利用しません。
このような場合に、すべてにアクセス可能なAWSアカウントでAWSを利用すると、未使用のサービスやリソースに意図せずアクセスし、障害やセキュリティ侵害などの原因になりかねません。IAMを利用すれば、AWSのユーザーやアクセス許可を細かく設定することで、サービスやリソースへのアクセスを安全に制御できます。
IAMユーザー/グループ
IAMユーザーは、IAMで利用するエンティティの1つです。たとえば、IAMユーザーを作成し、開発に必要なAWSサービスやリソースへのアクセス権限を与えるポリシーを設定することで、開発者によるAWSへのアクセスを制御可能です。AWS CLI(コマンドラインインターフェイス)で作業を行う場合は、IAMユーザーに割り当てた認証情報(AWS Access Key IDとAWS Secret Access Key)を指定します。
また、アクセス権限を設定したIAMグループを作成し、ユーザーを登録すれば、ユーザーのアクセス権限をより柔軟に管理できます。ユーザーは複数のIAMグループに所属可能です。
IAMロール
IAMロールとは、AWSリソースへのリクエストを行う権限を定義するエンティティです。IAMロールは特定のユーザーまたはグループに関連付けられません。Amazon Elastic Compute Cloud(Amazon EC2)や今回のAWS LambdaのようなAWSサービスなどの信頼されたエンティティに適用されます。今回のスマホフレーフレー言語応援アプリのように、あるAWSサービスが別のAWSサービスやリソースにアクセスするような場合には、必要最低限のアクセス権限を設定したIAMロールを利用します。
IAMユーザー/グループ、IAMロールは、マネジメントコンソールだけでなく、AWS CLIやAPIを使って作成することもできます。