IAM 識別子 - AWS Identity and Access Management

IAM 識別子

IAM は、ユーザー、ユーザーグループ、ロール、ポリシー、およびサーバー証明書に対していくつかの異なる識別子を使います。このセクションでは、ID およびそれぞれの ID の使い方について説明します。

フレンドリ名とパス

ユーザー、ロール、ユーザーグループ、またはポリシーを作成する場合、またはサーバー証明書をアップロードする場合は、フレンドリ名を付けます。たとえば、Bob、TestApp1、開発者、ManageCredentialsPermissions、ProdServerCert などがあります。

IAM API または AWS Command Line Interface (AWS CLI) を使用して IAM リソースを作成する場合、一部のリソースにオプションのパスを追加することもできます。単一のパスを使用することも、フォルダ構造であるかのように複数のパスをネストすることもできます。例えば、会社の組織構造に一致するように、ネストされたパス /division_abc/subdivision_xyz/product_1234/engineering/ を使用できます。その後、パスのユーザーすべてが Policy Simulator API にアクセス許可するためのポリシーを作成できます。このポリシーを表示するには、IAM: ユーザーパスに基づいた Policy Simulator API へのアクセス を参照してください。フレンドリ名の指定方法については、User API のドキュメントを参照してください。パスの使用方法のその他の例については、IAM ARN を参照してください。

AWS CloudFormation を使用してリソースを作成する場合、ユーザー、ユーザーグループ、ロール、およびカスタマー管理ポリシーのパスを指定できます。

ユーザーとユーザーグループに同じパスを与えても、IAM は、ユーザーを自動的にそのユーザーグループに分類しません。例えば、Developers ユーザーグループを作成し、そのパスを /division_abc/subdivision_xyz/product_1234/engineering/ と指定したとします。Bob という名前のユーザーを作成し、同じパスを与えた場合でも、これによって自動的に Bob が Developers ユーザーグループに分類されるわけではありません。IAM では、パスに基づいてユーザー、またはユーザーグループ間に境界が設定されるわけではありません。それらのリソースへの許可が付与されていれば、パスの異なるユーザーでも、同じリソースを使用できます。AWS アカウントの IAM リソースの数とサイズは制限されています。詳細については、「IAM および AWS STS クォータ」を参照してください。

IAM ARN

ほとんどのリソースにはフレンドリ名があります (Bob という名前のユーザーまたは Developers という名前のグループなど)。ただし、アクセス許可ポリシー言語では、以下の Amazon リソースネーム (ARN) 形式を使用して、リソースを指定する必要があります。

arn:partition:service:region:account:resource

各パラメータの意味は次のとおりです。

  • partition は、リソースのパーティションを識別します。標準の AWS リージョンの場合、パーティションは aws です。他のパーティションにリソースがある場合、パーティションは aws-partitionname です。たとえば、中国 (北京) リージョンにあるリソースのパーティションは、aws-cn です。異なるパーティションのアカウント間でアクセスを委任することはできません。

  • service は、AWS 製品を識別します。IAM リソースは常に iam を使用します。

  • region は、リソースのリージョンを識別します。IAM リソースの場合、これは常に空白にしておきます。

  • account は、ハイフンなしの AWS アカウント ID または AWS アカウントのエイリアスを指定します。

  • resource は、特定のリソースを名前で識別します。

IAM および AWS STS ARN は、次の構文を使用して指定できます。IAM リソースはグローバルに識別されるため、ARN のリージョンの割り当ては空白です。

構文:

arn:aws:iam::account:root arn:aws:iam::account:user/user-name-with-path arn:aws:iam::account:group/group-name-with-path arn:aws:iam::account:role/role-name-with-path arn:aws:iam::account:policy/policy-name-with-path arn:aws:iam::account:instance-profile/instance-profile-name-with-path arn:aws:sts::account:federated-user/user-name arn:aws:sts::account:assumed-role/role-name/role-session-name arn:aws:iam::account:mfa/virtual-device-name-with-path arn:aws:iam::account:u2f/u2f-token-id arn:aws:iam::account:server-certificate/certificate-name-with-path arn:aws:iam::account:saml-provider/provider-name arn:aws:iam::account:oidc-provider/provider-name

次の例の多くには、ARN のリソースパートにパスが含まれています。パスをAWS Management Consoleで作成、操作することはできません。パスを使用するには、AWS、AWS CLI API、または Tools for Windows PowerShell を使用してリソースを動作させる必要があります。

例:

arn:aws:iam::123456789012:root arn:aws:iam::123456789012:user/JohnDoe arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/JaneDoe arn:aws:iam::123456789012:group/Developers arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_A/Developers arn:aws:iam::123456789012:role/S3Access arn:aws:iam::123456789012:role/application_abc/component_xyz/RDSAccess arn:aws:iam::123456789012:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer arn:aws:iam::123456789012:role/service-role/QuickSightAction arn:aws:iam::123456789012:policy/UsersManageOwnCredentials arn:aws:iam::123456789012:policy/division_abc/subdivision_xyz/UsersManageOwnCredentials arn:aws:iam::123456789012:instance-profile/Webserver arn:aws:sts::123456789012:federated-user/JohnDoe arn:aws:sts::123456789012:assumed-role/Accounting-Role/JaneDoe arn:aws:iam::123456789012:mfa/JaneDoeMFA arn:aws:iam::123456789012:u2f/user/JohnDoe/default (U2F security key) arn:aws:iam::123456789012:server-certificate/ProdServerCert arn:aws:iam::123456789012:server-certificate/division_abc/subdivision_xyz/ProdServerCert arn:aws:iam::123456789012:saml-provider/ADFSProvider arn:aws:iam::123456789012:oidc-provider/GoogleProvider

以下の例は、さまざまなタイプの IAM および AWS STS リソースの ARN 形式を理解するのに役立つ詳細情報を示します。

  • アカウントの IAM ユーザー

    注記

    各 IAM ユーザー名は一意で、大文字と小文字は区別されません。

    arn:aws:iam::123456789012:user/JohnDoe
  • 組織図を反映するパスを持つ別のユーザー:

    arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/JaneDoe
  • IAM ユーザーグループ:

    arn:aws:iam::123456789012:group/Developers
  • パスを持つ IAM ユーザーグループ:

    arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_A/Developers
  • IAM ロール:

    arn:aws:iam::123456789012:role/S3Access
  • サービスにリンクされたロール:

    arn:aws:iam::123456789012:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer
  • サービスロール:

    arn:aws:iam::123456789012:role/service-role/QuickSightAction
  • 管理ポリシー:

    arn:aws:iam::123456789012:policy/ManageCredentialsPermissions
  • EC2 インスタンスと関連付けられるインスタンスプロファイル:

    arn:aws:iam::123456789012:instance-profile/Webserver
  • 「Paulo」として IAM で識別されるフェデレーティッドユーザー:

    arn:aws:sts::123456789012:federated-user/Paulo
  • 引き受けるロールが「Accounting-Role」、ロールのセッション名が「Mary」であるユーザーのアクティブセッション:

    arn:aws:sts::123456789012:assumed-role/Accounting-Role/Mary
  • Jorge という名前のユーザーに割り当てられた多要素認証デバイス:

    arn:aws:iam::123456789012:mfa/Jorge
  • サーバー証明書:

    arn:aws:iam::123456789012:server-certificate/ProdServerCert
  • 組織図を反映したパスを持つサーバー証明書:

    arn:aws:iam::123456789012:server-certificate/division_abc/subdivision_xyz/ProdServerCert
  • ID プロバイダー (SAML および OIDC):

    arn:aws:iam::123456789012:saml-provider/ADFSProvider arn:aws:iam::123456789012:oidc-provider/GoogleProvider

もう 1 つの重要な ARN は ルートユーザー ARN です。これは IAM リソースではありませんが、この ARN の形式に精通している必要があります。多くの場合、ポリシーの Principal 要素で使用されます。

  • AWS アカウントには、次の情報が表示されます。

    arn:aws:iam::123456789012:root

以下に示すポリシーでは、Richard に対して、本人のアクセスキーを管理する権限を割り当てています。リソースは、IAM ユーザー Richard であることに注目してください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageRichardAccessKeys", "Effect": "Allow", "Action": [ "iam:*AccessKey*", "iam:GetUser" ], "Resource": "arn:aws:iam::*:user/division_abc/subdivision_xyz/Richard" }, { "Sid": "ListForConsole", "Effect": "Allow", "Action": "iam:ListUsers", "Resource": "*" } ] }
注記

ARN を使用して IAM ポリシー内のリソースを識別する場合、ポリシー変数を含めることができます。ポリシー変数には、ARN の一部としてランタイム情報(ユーザー名など)のプレースホルダを含めることができます。詳細については、「IAM ポリシーの要素: 変数とタグ」を参照してください。

ARN でのワイルドカードとパスの使用

ARN の resource 部分でワイルドカードを使用して、複数のユーザー、ユーザーグループ、またはポリシーを指定できます。例えば、product_1234 の作業に携わっている全ユーザーを表すには、次のように指定します。

arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/product_1234/*

名前が app_ という文字列で始まる複数のユーザーがいるとします。この場合、次の ARN を使用すると全員の名前を表すことができます。

arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/product_1234/app_*

AWS アカウントのすべてのユーザー、ユーザーグループ、またはポリシーを指定するには、それぞれ ARN の user/group/、または policy/ に続いて、ワイルドカードを使用します。

arn:aws:iam::123456789012:user/* arn:aws:iam::123456789012:group/* arn:aws:iam::123456789012:policy/*

ユーザー arn:aws:iam::111122223333:user/* に次の ARN を指定すると、次の両方の例に一致します。

arn:aws:iam::111122223333:user/JohnDoe arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/JaneDoe

ただし、ユーザー arn:aws:iam::111122223333:user/division_abc* に対して次の ARN を指定すると、2 番目の例と一致しますが、最初の例には一致しません。

arn:aws:iam::111122223333:user/JohnDoe arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/JaneDoe

ARN の user/group/、または policy/ 部分にワイルドカードを使用しないでください。たとえば、以下のことは許可されません。

arn:aws:iam::123456789012:u*

例 プロジェクトベースのユーザーグループ用のパスと ARN の使用例

パスをAWS Management Consoleで作成、操作することはできません。リソースでの作業でパスを使用するには、AWS、API、AWS CLI、または Tools for Windows PowerShell を使用する必要があります。

この例では、Marketing_Admin ユーザーグループの Jules が、/marketing/ パス内にプロジェクトベースのユーザーグループを作成します。彼は、会社におけるさまざまな役割のユーザーをユーザーグループに割り当てます。この例では、ユーザーのパスが本人の所属するグループには関連のないことを示しています。

マーケティンググループには、リリース間近の新製品があるため、/marketing/ パスに Widget_Launch という新しいユーザーグループを作成します。次に、ユーザーグループに以下のポリシーを割り当てます。これにより、新製品プロジェクト用に指定された example_bucket の一部のオブジェクトへのアクセスがユーザーグループに付与されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::example_bucket/marketing/newproductlaunch/widget/*" }, { "Effect": "Allow", "Action": "s3:ListBucket*", "Resource": "arn:aws:s3:::example_bucket", "Condition": {"StringLike": {"s3:prefix": "marketing/newproductlaunch/widget/*"}} } ] }

そして、この新製品プロジェクトに参加しているユーザーをこのユーザーグループに割り当てます。具体的には、/marketing/ パスから Patricia と Eli が、/sales/ パスからは Chris と Chloe が、/legal/ パスからは Alice と Jim が追加されます。

一意の識別子

IAM がユーザー、ユーザーグループ、ロール、ポリシー、インスタンスプロファイル、サーバー証明書を作成する際、各リソースには次のような一意の ID が割り当てられます。

AIDAJQABLZS4A3QDU576Q

ほとんどの場合、IAM リソースを操作するときは、フレンドリ名と ARN を使用します。そうすれば、特定のリソースの一意の ID を知る必要はありません。しかしながら、フレンドリ名を用いることが実際的でないときなど、場合によっては一意の ID が役立つこともあります。

1 つの例では、AWS アカウントのフレンドリ名を再利用します。アカウント内において、ユーザー、ユーザーグループ、またはポリシーに対するフレンドリ名は一意である必要があります。たとえば、David という IAM ユーザーを作成するとしましょう。会社は、Amazon S3 を使用し、各従業員用のフォルダがあるバケット持っています。バケットには、ユーザーがバケット内の自分のフォルダにのみアクセスすることを許可する、リソースベースのポリシー (バケットポリシー) があります。そこで、David という名の従業員が退職することになり、あなたは関連する IAM ユーザーを削除するとします。しかし後に David という名前を持つ別の従業員が入社してきて、あなたは David という新しい IAM ユーザーを作成しました。バケットポリシーで David IAM ユーザーを指定する場合、このポリシーにより、新しい David は、以前の David によって残された情報にアクセスできるようになります。

一方で、新しい IAM ユーザーが以前削除したフレンドリ名を再利用したとしても、すべての IAM ユーザーが一意の ID を有しています。この例の場合、古い IAM ユーザーである David と、新しい IAM ユーザーである David の ID は異なります。ユーザー名だけでなく一意の ID でアクセス権を付与するリソースベースのポリシーを作成できます。これにより、従業員が所有してはならない情報へのアクセスを誤って許可する可能性が低くなります。

また IAM ユーザー情報に関する独自のデータベース(またはその他のデータストア)を維持するときなども、ユーザー ID が役立ちます。一意の ID は、作成する各 IAM ユーザーに一意の識別子を提供できます。これは、前の例のように、名前を再利用する IAM ユーザーがいる場合でも同様です。

一意の ID プレフィックスを理解する

IAM は、一意の各 ID が適用するリソースタイプを示すために、以下のプレフィックスを使用します。

プレフィックス リソースタイプ
ABIA AWS STS サービスベアラートークン
ACCA コンテキスト固有の認証情報

AGPA

ユーザーグループ

AIDA

IAM ユーザー

AIPA Amazon EC2 インスタンスプロファイル
AKIA アクセスキー
ANPA

管理ポリシー

ANVA

管理ポリシーのバージョン

APKA パブリックキー
AROA ロール
ASCA 証明書

ASIA

一時 (AWS STS) アクセスキー ID はこのプレフィックスを使用しますが、シークレットアクセスキーとセッショントークンとの組み合わせでのみ一意です。

一意識別子を取得する

IAM リソースに対する一意の ID は、IAM コンソールでは取得できません。一意の ID を取得するには、以下の AWS CLI または IAM API コールを使用します。

AWS CLI:

IAM API: