AWS SNS ConfirmSubscription povolení nikdy poskytnuta IAM uživatele

0

Otázka

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é.

1

Nejlepší odpověď

0

Díky otázkou Marcin požádal o "hranice politiky," jsem se dozvěděl, že pojem IAM hranici politika existovala, co to bylo, a pak pevně můj problém.

V určitém okamžiku, když IAM uživatel byl setup, hranice politiky byl připojen k uživatelskému účtu, který vylučuje jakékoliv jiné politiky, které mohou být poskytnuty uživateli jiné služby nebo zásady skupiny.

Proto, když jsem si prohlédl IAM uživatel na otázku, našel jsem hranice politiky, která povolen pouze přístup k AWS S3 služeb. Tato politika brání své úsilí, aby poskytnout uživateli přístup k AWS SNS služby.

Po odstranění hranice politiky, IAM uživatelské nastavení nyní čtení "Oprávnění hranice (not set)" a potvrzením SNS odběry práce, jak se očekávalo.

Díky za pomoc, Marcin!

2021-11-17 18:26:03

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................