Michael - sqlbot の答えは正しい (+1) ですが、比較的最近ではあるが非常に有用な変数が AWS アクセス コントロール ポリシーに追加されたことを考えると、完全ではありません。
本日、AWS アクセス ポリシー言語を拡張して、変数のサポートを含めます。ポリシー変数を使用すると、個別のアクセス制御を含む一般的なポリシーを簡単に作成および管理できます。
これにより、「IAM Credentials Self Management」グループ ポリシーの実装が可能になります。これは通常、一般的な「ユーザー」などの最も基本的な IAM グループに割り当てられます。
- 次のソリューションは、AWS アカウントの所有者 (または IAM 自体を管理する権限を持つ IAM ユーザー) が実装する必要がありますが、他のユーザーによる資格情報の自己管理を有効にするために一度だけ実行する必要があることに注意してください。
公式ソリューション
それぞれの例は、紹介ブログ投稿に含まれています(また、 IAMドキュメントでユーザーが自分のセキュリティ資格情報を管理できるようにすることもできます -更新: この例は、おそらく次を使用したカスタム ソリューションを介して適用できるため、再び消えました。 API のみであり、混乱を招きます):
また、変数置換により、ユーザーが自分の資格情報を管理できるようになります。多くのユーザーがいる場合、ユーザーが独自の資格情報を作成およびローテーションできる個別のポリシーを作成するのは現実的ではない場合があります。変数置換を使用すると、これをグループ ポリシーとして簡単に実装できます。次のポリシーは、すべての IAM ユーザーが自分の資格情報に対してキーおよび証明書関連のアクションを実行することを許可します。[鉱山を強調]
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action":["iam:*AccessKey*","iam:*SigningCertificate*"],
"Resource":["arn:aws:iam::123456789012:user/${aws:username}"]
}
]
}
リソース スコープarn:aws:iam::123456789012:user/${aws:username}
により、すべてのユーザーが自分の資格情報へのアクセスのみを効果的に許可されることが保証されます。
このソリューションには、ユーザーが AWS リソースにアクセスする方法 (API、CLI、AWS マネジメント コンソールなど) に応じて、使いやすさの問題が残ることに注意してください(後者には、追加のアクセス許可が必要です)。
また、さまざまな*
文字がワイルドカードであるため、これiam:*AccessKey*
を含むすべての IAM アクションに対応しますAccessKey
(詳細については、「IAM ポリシー要素リファレンス」を参照してください)。
拡張バリエーション
免責事項:特に IAM アクセスに影響を与える IAM ポリシーの正しい構成は明らかに繊細であるため、次のソリューションのセキュリティへの影響についてはご自身で判断してください。
以下は、 AWS 多要素認証 (MFA)デバイスの自己管理と、AWS マネジメント コンソールを使いやすくするためのいくつかの使いやすさの強化を含む、より明示的でわずかに拡張されたバリエーションです。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"iam:CreateAccessKey",
"iam:DeactivateMFADevice",
"iam:DeleteAccessKey",
"iam:DeleteSigningCertificate",
"iam:EnableMFADevice",
"iam:GetLoginProfile",
"iam:GetUser",
"iam:ListAccessKeys",
"iam:ListGroupsForUser",
"iam:ListMFADevices",
"iam:ListSigningCertificates",
"iam:ListUsers",
"iam:ResyncMFADevice",
"iam:UpdateAccessKey",
"iam:UpdateLoginProfile",
"iam:UpdateSigningCertificate",
"iam:UploadSigningCertificate"
],
"Effect": "Allow",
"Resource": [
"arn:aws:iam::123456789012:user/${aws:username}"
]
},
{
"Action": [
"iam:CreateVirtualMFADevice",
"iam:DeleteVirtualMFADevice",
"iam:ListVirtualMFADevices"
],
"Effect": "Allow",
"Resource": "arn:aws:iam::123456789012:mfa/${aws:username}"
}
]
}