2017-02-02 13 views
0

私は開発者が他のユーザーとの間で追加/削除/混乱のアクセス許可を与えたくない場合を除いて、自分が望むものを試してみるためのテストアカウントを持っています。私はすべてを許可してからIAMアクセスを拒否しましたが、自分のパスワードを変更できませんでした。例えば:彼らはPWログインして変更しようとしたとき、ユーザーが次のエラーを得たので新しいユーザーの作成を除いて、IAMグループにすべてのアクセス権を与える方法を教えてください。

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "*" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     }, 
     { 
      "Effect": "Deny", 
      "Action": [ 
       "iam:*" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     }, 
    ] 
} 

これは、それを作った:

User is not authorized to perform iam:ChangePassword 

答えて

1

私は適度で大丈夫な答えを考え出しました。私は、パスワードを変更してパスワードの要件を確認する機能を除いて、すべてのIAMアクションを拒否することでこれを達成しました。

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "*" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     }, 
     { 
      "Effect": "Deny", 
      "Action": [ 
       "iam:AddRoleToInstanceProfile", 
       "iam:AddUserToGroup", 
       "iam:AddClientIDToOpenIDConnectProvider", 
       "iam:AttachGroupPolicy", 
       "iam:AttachRolePolicy", 
       "iam:AttachUserPolicy", 
       "iam:CreateAccessKey", 
       "iam:CreateAccountAlias", 
       "iam:CreateGroup", 
       "iam:CreateInstanceProfile", 
       "iam:CreateLoginProfile", 
       "iam:CreateOpenIDConnectProvider", 
       "iam:CreatePolicy", 
       "iam:CreatePolicyVersion", 
       "iam:CreateRole", 
       "iam:CreateSAMLProvider", 
       "iam:CreateUser", 
       "iam:CreateVirtualMFADevice", 
       "iam:DeactivateMFADevice", 
       "iam:DeleteAccessKey", 
       "iam:DeleteAccountAlias", 
       "iam:DeleteAccountPasswordPolicy", 
       "iam:DeleteGroup", 
       "iam:DeleteGroupPolicy", 
       "iam:DeleteInstanceProfile", 
       "iam:DeleteLoginProfile", 
       "iam:DeleteOpenIDConnectProvider", 
       "iam:DeletePolicy", 
       "iam:DeletePolicyVersion", 
       "iam:DeleteRole", 
       "iam:DeleteRolePolicy", 
       "iam:DeleteSAMLProvider", 
       "iam:DeleteSSHPublicKey", 
       "iam:DeleteServerCertificate", 
       "iam:DeleteSigningCertificate", 
       "iam:DeleteUser", 
       "iam:DeleteUserPolicy", 
       "iam:DeleteVirtualMFADevice", 
       "iam:DetachGroupPolicy", 
       "iam:DetachRolePolicy", 
       "iam:DetachUserPolicy", 
       "iam:EnableMFADevice", 
       "iam:GenerateCredentialReport", 
       "iam:GenerateServiceLastAccessedDetails", 
       "iam:GetAccessKeyLastUsed", 
       "iam:GetAccountAuthorizationDetails", 
       "iam:GetAccountSummary", 
       "iam:GetContextKeysForCustomPolicy", 
       "iam:GetContextKeysForPrincipalPolicy", 
       "iam:GetCredentialReport", 
       "iam:GetGroup", 
       "iam:GetGroupPolicy", 
       "iam:GetInstanceProfile", 
       "iam:GetLoginProfile", 
       "iam:GetOpenIDConnectProvider", 
       "iam:GetPolicy", 
       "iam:GetPolicyVersion", 
       "iam:GetRole", 
       "iam:GetRolePolicy", 
       "iam:GetSAMLProvider", 
       "iam:GetSSHPublicKey", 
       "iam:GetServerCertificate", 
       "iam:GetServiceLastAccessedDetails", 
       "iam:GetServiceLastAccessedDetailsWithEntities", 
       "iam:GetUser", 
       "iam:GetUserPolicy", 
       "iam:ListAccessKeys", 
       "iam:ListAccountAliases", 
       "iam:ListAttachedGroupPolicies", 
       "iam:ListAttachedRolePolicies", 
       "iam:ListAttachedUserPolicies", 
       "iam:ListEntitiesForPolicy", 
       "iam:ListGroupPolicies", 
       "iam:ListGroups", 
       "iam:ListGroupsForUser", 
       "iam:ListInstanceProfiles", 
       "iam:ListInstanceProfilesForRole", 
       "iam:ListMFADevices", 
       "iam:ListOpenIDConnectProviders", 
       "iam:ListPolicies", 
       "iam:ListPoliciesGrantingServiceAccess", 
       "iam:ListPolicyVersions", 
       "iam:ListRolePolicies", 
       "iam:ListRoles", 
       "iam:ListSAMLProviders", 
       "iam:ListSSHPublicKeys", 
       "iam:ListServerCertificates", 
       "iam:ListSigningCertificates", 
       "iam:ListUserPolicies", 
       "iam:ListUsers", 
       "iam:ListVirtualMFADevices", 
       "iam:PassRole", 
       "iam:PutGroupPolicy", 
       "iam:PutRolePolicy", 
       "iam:PutUserPolicy", 
       "iam:RemoveClientIDFromOpenIDConnectProvider", 
       "iam:RemoveRoleFromInstanceProfile", 
       "iam:RemoveUserFromGroup", 
       "iam:ResyncMFADevice", 
       "iam:SetDefaultPolicyVersion", 
       "iam:SimulateCustomPolicy", 
       "iam:SimulatePrincipalPolicy", 
       "iam:UpdateAccessKey", 
       "iam:UpdateAccountPasswordPolicy", 
       "iam:UpdateAssumeRolePolicy", 
       "iam:UpdateGroup", 
       "iam:UpdateLoginProfile", 
       "iam:UpdateOpenIDConnectProviderThumbprint", 
       "iam:UpdateSAMLProvider", 
       "iam:UpdateSSHPublicKey", 
       "iam:UpdateServerCertificate", 
       "iam:UpdateSigningCertificate", 
       "iam:UpdateUser", 
       "iam:UploadSSHPublicKey", 
       "iam:UploadServerCertificate", 
       "iam:UploadSigningCertificate" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     } 
    ] 
} 

これは機能しますが、私はより簡潔な/将来的な何かが大好きです。

1

さらに簡潔な答えとして、ワイルドカードを使用できます。完全に将来の証拠ではありませんが、それらはほとんどの損害動詞です。 :)

はまた、私はポリシーシミュレータは非常に有用であることが判明:IAM policy simulator

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": "*", 
     "Resource": "*" 
    }, 
    { 
     "Effect": "Deny", 
     "Action": [ 
      "iam:Add*", 
      "iam:Create*", 
      "iam:Deactivate*", 
      "iam:Delete*", 
      "iam:Detach*", 
      "iam:Enable*", 
      "iam:PassRole", 
      "iam:Put*", 
      "iam:Remove*", 
      "iam:Resync*", 
      "iam:Set*", 
      "iam:Simulate*", 
      "iam:Update*", 
      "iam:Put*" 
     ], 
     "Resource": "*" 
    } 
]} 
関連する問題