SAPro受験時必見!AssumeRoleってなんだ?
SolutionArchitect Professionalを受けようとしている皆様
こんにちは。
10月末にAWS資格コンプしてわーいって思ってたら、
11/14に新資格が3つも発表されて少しげんなりしているiryondです。
https://aws.amazon.com/jp/certification/certified-big-data-specialty/ https://aws.amazon.com/jp/certification/certified-advanced-networking-specialty/ https://aws.amazon.com/jp/certification/certified-security-specialty/
今日は、IAMの勉強で必ず登場するAssumeRoleについて解説したいと思います。
以下目次です!
意訳
単語の意味はそれぞれ下記です。
Assume:思い込む、決めてかかる、当然思う、・・・・、引き受ける
Role:役割
Assumeとかしらねーよって思ってましたが、
そういう意味らしいです。
AssumeRoleにおいては、「引き受ける」という訳を使います。
つまり、「役割」を「引き受ける」ということです。
つまり、意味不明です。
ざっくりいうと?
「自分が定めてロールに設定したポリシーを」、
「他のAWSアカウントなどに一時的に付与する」
機能です。
"など"、と書きましたが、対象には下記を選択可能です。
これらはPrincipalと呼ばれており、
下記のとおり記載されています。
どういうときに使う?
例えば、AWS上でSaasとしてサービスを提供していて
顧客のAWSリソースを操作したい場合に、
一時的にAPI実行用のクレデンシャルを受領するために使います。
わかりやすい例でいうと、
監視系サービスを提供しているプロバイダさんが、
顧客の各種リソース(EC2やCloudWatchなど)の情報を取得する場合に使います。
Datadogなんかがそうですね。
こんな感じで見れるようになります。
aws integrationするとこんな感じ
— りょう (@iryond) 2016年11月14日
試しに仕込んだセルフAutoRecoveryもちゃんと拾ってる pic.twitter.com/gs3PVULazO
どううれしいの?
同じことをアクセスキーとシークレットアクセスキーの配布で実現可能ですが、
AssumeRoleを使うとユーザ側の各キーの流出リスクを防ぐことができます。
アクセスキーとシークレットアクセスキーはわかりやすいけど、
あんまり使わないでね!ってのがAWSからのメッセージなのかもしれないですね。
作り方は?
AssumeRoleポリシードキュメントでPrincipalを設定し、
AssumeRoleポリシードキュメントを指定したRoleを作成し、
RoleにPolicyを設定します。
ね、簡単でしょ?
(試験受けた時僕は全然わかってなかったです。)
手順を知りたい方はこちらの最高な手順ををご覧ください。
どういう動きになる?
- ロールを引き受けるため、アプリケーションは AWS STS AssumeRole API を呼び出して、使用するロールの ARN を渡します。
- AssumeRole API は、一時的な認証情報セットを返します。
- 後続の AWS API 呼び出してこの認証情報を使用し、ロールを所有するアカウントのリソースにアクセスできます。
- 一時的な認証情報には、ロールのアクセスポリシーで定義されたアクセス許可があります。
と、ここに書いてありました。
まとめ
調べても調べてもよくわからないAssumeRoleの説明でした。
ちなみに、僕が内容を理解できたのはJaws-ug朝会#8の、
まずはDatadog使ってみましょう!会に参加したためでした。
JAWS-UG朝会 #8 datadog-process-rds-metrics (前編) - connpass
みんなで助け合いながら成長しましょうという会なので、
もしご興味ある方はぜひ参加してみてはいかがでしょうか。
(@tcshさんいつもありがとうございます!)