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