一時的なセキュリティ認証情報を作成するためのアクセス権限の付与
デフォルトで、IAM ユーザーには AWS STS フェデレーションユーザーおよびロールに一時的なセキュリティ認証情報を作成するアクセス許可がありません。ユーザーに上記の権限を提供するポリシーを使用する必要があります。ユーザーに直接アクセス権限を付与できますが、アクセス権限はグループに付与することを強くお勧めします。これによって、アクセス権限の管理が容易になります。ユーザーがアクセス権限に関連付けられているタスクを実行する必要がなくなった場合には、そのユーザーをグループから削除するだけです。他のユーザーがそのタスクを実行する必要がある場合には、そのユーザーをグループに追加して、アクセス権限を付与します。
AWS STS フェデレーションユーザーのセッションまたはロールに一時的なセキュリティ認証情報を作成するアクセス許可を IAM グループに付与するには、次の権限の少なくとも 1 つを付与するポリシーをアタッチします。
-
OIDC および SAML フェデレーティッドプリンシパルが IAM ロールにアクセスするには、AWS STS
AssumeRole
にアクセス許可を付与します。 -
ロールが不要な AWS STS フェデレーションユーザーには、AWS STS
GetFederationToken
にアクセス許可を付与します。
AssumeRole
および GetFederationToken
の API オペレーションの違いの詳細については、「一時的なセキュリティ認証情報をリクエストする」を参照してください。
また、IAM ユーザーは、一時的なセキュリティ認証情報を作成するために GetSessionToken
を呼び出すこともできます。ユーザーが GetSessionToken
を呼び出すためには、アクセス権限を必要としません。このオペレーションの目的は、MFA を使用してユーザーを認証することです。認証を制御するためにポリシーを使用することはできません。つまり、IAM ユーザーが GetSessionToken
を呼び出して、一時的な認証情報を作成することを回避することはできません。
例 ロールを引き受けるアクセス許可を付与するポリシー
以下のポリシーの例では、AWS アカウント 123123123123
の UpdateApp
ロールに対して AssumeRole
を呼び出すアクセス許可が与えられます。AssumeRole
を使用する場合、フェデレーティッドユーザーの代わりにセキュリティ認証情報を作成するユーザー (またはアプリケーション) は、ロールのアクセス許可ポリシーに指定されていないあらゆるアクセス許可を委任することができません。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123123123123:role/UpdateAPP" }] }
例 フェデレーティッドユーザーの一時的なセキュリティ認証情報を作成するアクセス権限を付与するポリシーの例
次のポリシーの例では、GetFederationToken
にアクセスできるアクセス許可が付与されます。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sts:GetFederationToken", "Resource": "*" }] }
重要
IAM ユーザーが GetFederationToken
を持つ AWS STS フェデレーションユーザーに対して一時的なセキュリティ認証情報を作成するためにアクセス権限を付与する場合、そのユーザーが独自のアクセス権限を委任できるようになりますので注意してください。IAM ユーザーや AWS アカウント へのアクセス許可の委任については、「アクセス権を委任するポリシーの例」を参照してください。一時的なセキュリティ認証情報のアクセス許可を制御する方法の詳細については、「一時的なセキュリティ認証情報のアクセス許可」を参照してください。
例 フェデレーティッドユーザーの一時的セキュリティ認証情報を作成するユーザーを限定するアクセス許可を付与するポリシーの例
IAM ユーザーが GetFederationToken
呼び出しをできるようにする場合、IAM ユーザーに委任できる権限を制限することがベストプラクティスです。例えば次のポリシーでは、名前が「Manager」で始まる AWS STS フェデレーションユーザーのみに対し、IAM ユーザーが一時的なセキュリティ認証情報を作成できるようにする方法を示します。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sts:GetFederationToken", "Resource": ["arn:aws:sts::123456789012:federated-user/Manager*"] }] }