読者です 読者をやめる 読者になる 読者になる

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アカウントなどに一時的に付与する」
機能です。

"など"、と書きましたが、対象には下記を選択可能です。

  • AWSサービス(EC2など)
  • AWSアカウント
  • 他のサービス

これらはPrincipalと呼ばれており、
下記のとおり記載されています。

docs.aws.amazon.com

作り方は?

AssumeRoleポリシードキュメントでPrincipalを設定し、
AssumeRoleポリシードキュメントを指定したRoleを作成し、
RoleにPolicyを設定します。

ね、簡単でしょ?
(試験受けた時僕は全然わかってなかったです。)

手順を知りたい方はこちらの最高な手順ををご覧ください。

qiita.com

どううれしいの?

同じことをアクセスキーとシークレットアクセスキーの配布で実現可能ですが、
AssumeRoleを使うとユーザ側の各キーの流出リスクを防ぐことができます。

アクセスキーとシークレットアクセスキーはわかりやすいけど、
あんまり使わないでね!ってのがAWSからのメッセージなのかもしれないですね。

どういうときに使う?

例えば、AWS上でSaasとしてサービスを提供していて
顧客のAWSリソースを操作したい場合に、
一時的にAPI実行用のクレデンシャルを受領するために使います。

わかりやすい例でいうと、
監視系サービスを提供しているプロバイダさんが、
顧客の各種リソース(EC2やCloudWatchなど)の情報を取得する場合に使います。

Datadogなんかがそうですね。
こんな感じで見れるようになります。

どういう動きになる?

  1. ロールを引き受けるため、アプリケーションは AWS STS AssumeRole API を呼び出して、使用するロールの ARN を渡します。
  2. AssumeRole API は、一時的な認証情報セットを返します。
  3. 後続の AWS API 呼び出してこの認証情報を使用し、ロールを所有するアカウントのリソースにアクセスできます。
  4. 一時的な認証情報には、ロールのアクセスポリシーで定義されたアクセス許可があります。

と、ここに書いてありました。

docs.aws.amazon.com

まとめ

調べても調べてもよくわからないAssumeRoleの説明でした。
ちなみに、僕が内容を理解できたのはJaws-ug朝会#8の、
まずはDatadog使ってみましょう!会に参加したためでした。

JAWS-UG朝会 #8 datadog-process-rds-metrics (前編) - connpass

みんなで助け合いながら成長しましょうという会なので、
もしご興味ある方はぜひ参加してみてはいかがでしょうか。
(@tcshさんいつもありがとうございます!)