IAM ID
IAM は、ユーザー、ユーザーグループ、ロール、ポリシー、およびサーバー証明書に対していくつかの異なった ID を使います。このセクションでは、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 を指定します。 -
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 API、AWS CLI または Windows PowerShell 用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 の一部としてランタイム情報(ユーザー名など)のプレースホルダを含めることができます。詳細については、「 ポリシーの要素: 変数とタグ」を参照してください。
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/
部分にワイルドカードを使用しないでください。例えば、IAM では次のことは許可されません。
arn:aws:iam::123456789012:u*
例 プロジェクトベースのユーザーグループ用のパスと ARN の使用例
パスをAWS Management Consoleで作成、操作することはできません。パスを使用するには、AWS API、AWS CLI、またはTools for WindowsPowerShellを使用してリソースを操作する必要があります。
この例では、Marketing_Admin ユーザーグループの Jules が /marketing/ パス内にプロジェクトベースのユーザーグループを作成します。Jules は、会社のさまざまな部分のユーザーをユーザーグループに割り当てます。この例では、ユーザーのパスが本人の所属するユーザーグループには関連のないことを示しています。
マーケティング部門には、リリース間近の新製品があり、そのため Jules は /marketing/ パスに Widget_Launch という新しいユーザーグループを作成します。次に、Jules はグループに以下のポリシーを割り当てます。これにより、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/*"}} } ] }
そして Jules は、この新製品プロジェクトに参加しているユーザーを Widget_Launch ユーザーグループに割り当てます。具体的には、/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 ユーザーが以前削除したフレンドリ名を再利用したとしても、すべての ユーザーが一意の ID を持っています。この例の場合、古い IAM ユーザーである David と、新しい IAM ユーザーである David の ID は異なります。ユーザー名だけでなく一意の ID でアクセスを許可するリソースポリシーを作成できます。これにより、従業員が所有してはならない情報へのアクセスを誤って許可する可能性が低くなります。
また IAM ユーザー情報に関する独自のデータベース (またはその他のデータストア) を維持するときなども、ユーザー ID が役立ちます。一意の ID は、作成する各 IAM ユーザーに一意の識別子を提供できます。これは、前の例のように、名前を再利用する IAM ユーザーがいる場合でも同様です。
一意の ID プレフィックスを理解する
IAM は、一意の各 ID が適用するリソースタイプを示すために、以下のプレフィックスを使用します。
Prefix | リソースタイプ |
---|---|
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: