本稿は、AWS Solution Architect Professional に出題される AWS Identity and Access Management (IAM) について個人用にまとめた記事です。
目次
AWS IAM が出題されるシナリオパターン
- STS から一時的に提供したアクセス権をすぐに取り消すにはどうすればよいか。
- インスタンスはロールをどのようにして参照しているか。
IAM とは
AWS リソースへのアクセスを安全にコンソールするためのウェブサービスです。IAM を使用して、リソースを使用するために認証 (サインイン) され、許可された (アクセス許可を持つ) ユーザーを制御します。
AWS リソースへのアクセス権を第三者に付与するときに外部 ID を使用する方法
組織内の AWS リソースへ組織外の第三者がアクセスする必要がある場合には、ロールを使用することでアクセス許可を委任することができます。たとえば、組織内の AWS リソースの管理を第三者へ委託しているような場合が相当します。IAM ロールを使用することで、AWS 認証情報 ( Credentials ) を共有することなく第三者に AWS リソースへのアクセスを許可することができます。第三者は代わりに、AWS アカウントに作成したロールを引き受けることで、AWS リソースにアクセスできます。
たとえば、監視 SaaS の Datadog を利用する場合、IAM ロールと外部 ID を利用することで簡単に AWS サービスリソースの監視を行うことができます。
第三者は、以下の情報を提供する必要があります。これらの情報は、第三者が引き受けることのできるロールの作成に必要です。
- 第三者の AWS アカウント ID。ロールの信頼ポリシーを定義するときは、その AWS アカウントをプリンシパルとして指定します。
- ロールを一意に関連付けるための外部 ID。外部 ID は、ユーザーとサードパーティーによって識別されるシークレット識別子です。たとえば、ユーザーとサードパーティーの間の請求書 ID は使用できますが、サードパーティーの名前や電話番号などの推測できるものは使用しないでください。ロールの信頼ポリシーを定義するときは、この ID を指定する必要があります。サードパーティーは、ロールを引き受けるときに、この ID を指定する必要があります。外部 ID の詳細については、AWS リソースへのアクセス権を第三者に付与するときに外部 ID を使用する方法 を参照してください。
- 第三者が AWS リソースでの作業を行うのに必要なアクセス許可。ロールのアクセス許可ポリシーを定義する際に、権限を指定する必要があります。このポリシーには、第三者はどのアクションができるのか、およびどのリソースにアクセスできるのかが定義されています。
ロールの作成が完了したら、そのロールの Amazon リソースネーム(ARN)を対象の第三者に提供します。第三者がロールを担当するにあたり、このロールの ARN を必要とします。
クロスアカウントアクセス
既存の IAM ユーザで、別の AWS アカウントの リソースにアクセスしたい場合にクロスアカウントアクセスを行います。
具体的に、アカウント A から アカウント B のリソースへアクセスしたい場合、アカウント A に AssumeRole が可能な IAM ユーザを作成し、アカウント B に アカウント A の IAM ユーザに付与するクロスアカウント用 IAM ロールを作成します。
作成した IAM ユーザ で アカウント A のコンソールにログインし、作成したIAM ロールで Switch Role し、アカウント B にログインします。
IAM ロールの一時的なセキュリティ認証情報の取り消し
ユーザーが長いセッションの有効期間 (12 時間など) を使用して AWS マネジメントコンソール にアクセスできるようにすると、一時的な認証情報がすぐに期限切れになることはありません。ユーザーが意図せずに認証情報を不正なサードパーティーに公開した場合、そのパーティーはセッションの期間アクセスできます。ただし、必要がある場合は、特定の時点より前に発行したロールの認証情報の、すべてのアクセス許可をすぐに取り消しできます。指定された時間より前に発行された、そのロールのすべての一時的な認証情報が無効になります。これにより、すべてのユーザーは新しい認証情報を再認証し、リクエストしなければならなくなります。
インスタンスプロファイル
インスタンスプロファイルは IAM ロールのコンテナであり、インスタンスの起動時に EC2 インスタンスにロール情報を渡すために使用できます。
インスタンス起動時に IAM 情報を渡すコンテナです。 インスタンスと IAM ロールは直接関連づけられていない事に注意しましょう。
参考リンク
( https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html )