AWS: IAM 사용자가 Security credentials 페이지에서 본인 비밀번호·액세스 키·SSH 공개 키 관리하기
AWS: IAM 사용자가 Security credentials 페이지에서 본인 비밀번호·액세스 키·SSH 공개 키 관리하기
이 예시는 IAM 사용자가 Security credentials 페이지에서 본인 비밀번호, 액세스 키, X.509 인증서를 관리하도록 허용하는 자격 증명 기반 정책을 만드는 방법을 보여드려요. 이 콘솔 페이지에는 계정 ID, canonical user ID 같은 계정 정보가 표시되고, 사용자는 본인의 비밀번호·액세스 키·MFA 디바이스·X.509 인증서·SSH 키·Git 자격 증명을 보고 편집할 수 있어요.
이 예시 정책에는 본인의 비밀번호, 액세스 키, X.509 인증서만 보고 편집하는 데 필요한 권한이 들어 있어요. MFA를 포함해 본인의 모든 자격 증명을 관리하게 하려면 AWS: Allows MFA-authenticated IAM users to manage their own credentials 문서를, MFA 없이 관리하게 하려면 AWS: Allows IAM users to manage their own credentials 문서를 참고하세요.
출처: 문서
본문
이 정책이 하는 일
AllowViewAccountInfo 스테이트먼트는 계정 수준 정보를 볼 수 있게 해줘요. 이 권한들은 리소스 ARN을 지정하지 않는(또는 지정할 필요가 없는) 권한이라 별도의 스테이트먼트로 분리하며, 대신 "Resource" : "*"를 지정해요. 이 스테이트먼트가 허용하는 액션은 다음과 같아요.
GetAccountPasswordPolicy– 본인 IAM 사용자 비밀번호를 변경할 때 계정 비밀번호 요건을 볼 수 있어요.GetAccountSummary– 계정 ID와 계정 canonical user ID를 볼 수 있어요.
AllowManageOwnPasswords 스테이트먼트는 본인 비밀번호를 변경할 수 있게 해줘요. 이 스테이트먼트는 My security credentials 페이지의 대부분 정보를 보는 데 필요한 GetUser 액션도 포함해요.
AllowManageOwnAccessKeys 스테이트먼트는 본인 액세스 키를 생성·업데이트·삭제할 수 있게 해줘요. 지정한 액세스 키가 마지막으로 사용된 시점에 대한 정보도 가져올 수 있어요.
AllowManageOwnSSHPublicKeys 스테이트먼트는 CodeCommit용 본인 SSH 공개 키를 업로드·업데이트·삭제할 수 있게 해줘요.
이 정책은 사용자가 본인의 MFA 디바이스를 보거나 관리하는 것을 허용하지 않아요. 또한 IAM 콘솔의 Users 페이지를 보거나 그 페이지에서 본인 사용자 정보에 접근하는 것도 허용하지 않아요. 이 기능을 허용하려면 iam:ListUsers 액션을 AllowViewAccountInfo 스테이트먼트에 추가하면 돼요. 본인 사용자 페이지에서 비밀번호를 변경하는 것도 허용하지 않아요. 이 기능을 허용하려면 iam:GetLoginProfile과 iam:UpdateLoginProfile 액션을 AllowManageOwnPasswords 스테이트먼트에 추가하면 돼요.
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AllowViewAccountInfo",
"Effect": "Allow",
"Action": [
"iam:GetAccountPasswordPolicy",
"iam:GetAccountSummary"
],
"Resource": "*"
},
{
"Sid": "AllowManageOwnPasswords",
"Effect": "Allow",
"Action": [
"iam:ChangePassword",
"iam:GetUser"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "AllowManageOwnAccessKeys",
"Effect": "Allow",
"Action": [
"iam:CreateAccessKey",
"iam:DeleteAccessKey",
"iam:ListAccessKeys",
"iam:UpdateAccessKey",
"iam:GetAccessKeyLastUsed"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "AllowManageOwnSSHPublicKeys",
"Effect": "Allow",
"Action": [
"iam:DeleteSSHPublicKey",
"iam:GetSSHPublicKey",
"iam:ListSSHPublicKeys",
"iam:UpdateSSHPublicKey",
"iam:UploadSSHPublicKey"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
}
]
}