Cíl: Udělit oprávnění k IAM uživatele na potvrzení SNS Téma Předplatné
Problém: Pomocí AWS Webové Konzole, jsem schopen poskytnout správné SNS oprávnění IAM uživatelský účet bez ohledu na to, co liberální politik jsem se připojit k ní.
Kroky dokončena: vytvořil jsem Téma, které sleduje změny v S3 objekty a tlačí to do mé aplikace prostřednictvím sociálních sítí předplatné (HTTPS/JSON volání).
Můj kód, který obdrží žádost:
def self.confirm(arn, token)
client = retrieve_client
client.confirm_subscription(topic_arn: arn, token: token)
end
def self.retrieve_client
creds = Aws::Credentials.new(
Rails.application.credentials.dig(:aws, :access_key_id),
Rails.application.credentials.dig(:aws, :secret_access_key)
)
Aws::SNS::Client.new(region: 'us-east-2', credentials: creds)
end
Když můj kód obdrží SNS žádost potvrzení, zobrazí tato chybová zpráva:
Aws::SNS::Errors::AuthorizationError (User: arn:aws:iam::12345678912:user/user_name is not authorized to perform: SNS:ConfirmSubscription on resource: arn:aws:sns:us-east-2:12345678912:topic_name because no boundary policy allows the SNS:ConfirmSubscription action)
Výše uvedený kód funguje dobře s jiné aplikace (ale různé IAM uživatele), tak nevěřím, že kód je viník, ale přesto.
Já jsem se pokusil přidat politik do skupiny, pak uživatele do skupiny, se nic nemění.
Uchýlila jsem se k přímo dodal politik pro uživatele, nic se nezmění.
Zde jsou dva nejvíce tolerantní politik jsem se snažil a já nevím jaké další deku permissions můžu dát tomuto uživateli, aby se toto předplatné potvrzení práce.
Téma arn: arn:aws:sns:us-east-2:12345678912:topic_name
Téma zásady přístupu:
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:us-east-2:12345678912:topic_name
"StringEquals": {
"AWS:SourceAccount": "12345678912"
},
"ArnLike": {
"AWS:SourceArn": "arn:aws:s3:*:*:*"
}
}
}
]
}
Politika 1 (z AWS Podařilo AmazonSNSFullAccess politiky):
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"sns:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Politika 2, kde jsem jen kliknout tolikrát, Akce výběry, jak je to možné, jestli něco bude fungovat:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"sns:TagResource",
"sns:DeleteTopic",
"sns:ListTopics",
"sns:Unsubscribe",
"sns:CreatePlatformEndpoint",
"sns:SetTopicAttributes",
"sns:UntagResource",
"sns:OptInPhoneNumber",
"sns:CheckIfPhoneNumberIsOptedOut",
"sns:ListEndpointsByPlatformApplication",
"sns:SetEndpointAttributes",
"sns:Publish",
"sns:DeletePlatformApplication",
"sns:SetPlatformApplicationAttributes",
"sns:VerifySMSSandboxPhoneNumber",
"sns:Subscribe",
"sns:ConfirmSubscription",
"sns:RemovePermission",
"sns:ListTagsForResource",
"sns:DeleteSMSSandboxPhoneNumber",
"sns:ListSubscriptionsByTopic",
"sns:GetTopicAttributes",
"sns:ListSMSSandboxPhoneNumbers",
"sns:CreatePlatformApplication",
"sns:SetSMSAttributes",
"sns:CreateTopic",
"sns:GetPlatformApplicationAttributes",
"sns:GetSubscriptionAttributes",
"sns:ListSubscriptions",
"sns:AddPermission",
"sns:ListOriginationNumbers",
"sns:DeleteEndpoint",
"sns:ListPhoneNumbersOptedOut",
"sns:GetEndpointAttributes",
"sns:SetSubscriptionAttributes",
"sns:GetSMSSandboxAccountStatus",
"sns:CreateSMSSandboxPhoneNumber",
"sns:ListPlatformApplications",
"sns:GetSMSAttributes"
],
"Resource": "*"
}
]
}
Je zcela jasné, ke mně, jaké další zásady je zapotřebí, aby tento uživatel povolení nutné potvrdit SNS předplatné.