【アップデート】AWSサービスに権限付与する「Service-Linked Roles」がIAMの要素に追加されました!

IAM

地味サービス大好き森永です。

AWS Summit in San Franciscoにて様々なアップデートがあって盛り上がっている中、地味なアップデートがありましたのでご紹介したいと思います。

Service-Linked Rolesとは

AWSのリソースに権限を付与するためのIAMの新しい要素です。
IAMについて詳しい方は「いやいやIAM Roleあるやん」と思われると思いますので、2つの違いをご説明します。
(私もドキュメント読んで理解しただけなので間違ってたら教えてください。)

比較 IAM Role service-linked role
作成方法 自分で作成 自動作成
権限 iam:CreateRole
iam:PassRole
iam:CreateServiceLinkedRole
権限付与対象 ユーザ、AWSサービス、外部IdPなど AWSサービスのみ

service-linked roleの名の通り、このRoleは対応しているAWSリソースを作成した際に自動で作成されます。
作成されるRoleにはAWSリソースに必要な権限のみ設定され、紐付いているAWSリソース以外からは使用することが出来ないというものになっています。

IAM Roleの場合、自分が持っている権限よりも強い権限を作って好きな対象に権限を付与することが出来ます。
かと言って、Roleを割り当てる必要のあるAWSサービスは非常に多く、Roleを作る権限を与えられないというのは困ります。

service-linked roleは従来のIAM Roleと権限が分かれているため、自由にRoleを作られることなくAWSサービスに必要な権限だけ与えることが出来るというわけです。
めっちゃ便利ですやん。

現在対応しているAWSリソース(2017/4/20 現在)

  • Amazon Lex

AWS Services That Work with IAM - AWS Identity and Access Management

はい。まだLexしか対応していません。
AWS Blogには順次対応サービスを拡大していく旨記載がありますので待ちましょう。。。

作ってみる

「あれ?自動で作成されるはずなのに作れるの?」と思われるかもしれませんが、手動で作ることも可能です。
ただし、付与する権限使用できるAWSリソースは自動的に設定されます。
なのであんまり手動で作る意味は無いです。

今回は検証のため手動で作成してみましょう。
IAM Roleの一部という扱いなのでIAMの管理画面「Roles」の「Create Role」で作成します。

IAM_Management_Console

role type選択画面に「AWS service-linked role」が追加されていますね。
現在はLexのbotとchannelのためのRoleを作成できます。

IAM_Management_Console 2

次の画面にいくと、名前をつけることが出来ますが、指定できるのはsuffixだけです。
また、「Trusted entities」や「Policies」は既に指定されていて変更することは出来ません。

IAM_Management_Console 3

作成したRoleを見るとAWS管理のロールに付与されるアイコンが付いています。
ユーザが作ったものでもあくまでもAWSが管理していますよ、ということですね。

IAM_Management_Console 4

最後に

AWSリソースに権限を付与するIAM Roleの仕組みは非常に面白いですが、今まではそれを実現するための権限設計が面倒でした。
service-linked roleが標準になれば、管理者も開発者も楽に、そして安全にIAM Roleを使用できるようになりますね。

AWS Cloud Roadshow 2017 福岡