簡體   English   中英

SNS跨賬戶訂閱,附加層

[英]SNS cross account subscription with additional layer

我們擁有一個 AWS 賬戶,賬戶 A。我們依靠外部團隊將消息發布到他們的賬戶 B 中的 SNS 主題。我們使用賬戶 A 中的 SQS 隊列訂閱賬戶 B 中的 SNS 主題。賬戶 A已被賬號 B 的所有者列入訂閱 SNS 主題的白名單。

現在,我們想為多個(新)賬戶訂閱賬戶 B 中的 SNS 主題。 但是,擁有賬戶 B 的團隊無法手動將我們將創建的許多賬戶列入白名單。

我們有沒有辦法通過在賬戶 A 中創建的 IAM 角色之類的東西,將賬戶 A 的權限委托或代理到我們正在創建的所有新賬戶?

問題是帳戶 B 正試圖向帳戶 A 的特定用戶授予權限。就像您提到的,如果您需要設置多個帳戶,這可能是一個問題。

您可以通過多種方式解決此問題。

  1. 賬戶 B 授予賬戶 A 的權限。 然后,賬戶 A 擁有將訪問權限委派給任何 IAM 角色/用戶的完全權限。 這是一篇博客文章,其中包含這種設置方法https://aws.amazon.com/blogs/compute/cross-account-integration-with-amazon-sns/
  2. 在賬戶 A 中創建一個 IAM 組,並將用戶分配到該組。 然后,在賬戶 B 中,將權限授予賬戶 A 的組而不是特定用戶。 這是通過組提供訪問權限的示例

請注意,如果您使用解決方案 #1,賬戶 A 中的任何 IAM 用戶都將能夠訪問 SNS 資源。 如果多個應用程序在帳戶 A 中運行,這可能是一個問題。

你現在的情況是:

  • 您擁有的Account-A中的 Amazon SQS 隊列 ( Queue-A )
  • 其他人擁有的Account-B中的 Amazon SNS 主題 ( Topic-B )
  • 已向Topic-B添加權限,允許Account-A訂閱該主題

以上效果很好。

新要求:

  • 允許Account-CAccount-D訂閱Topic-B
  • Account-B的所有者不希望修改Topic-B的權限以允許這些訂閱請求

解決方案

不是Account-CAccount-D發送Subscribe()請求,而是要求Topic-B的所有者直接訂閱新隊列

你說“擁有賬戶 B 的團隊沒有能力手動將我們將創建的許多賬戶列入白名單。”

這是基於Account-CAccount-D應該自己將訂閱請求發送到Topic-B的想法。 相反,我建議您將Queue-CQueue-D的 ARN 提供給擁有Topic-B的團隊,並要求他們將這些隊列添加為訂閱者。 不需要Topic-B的權限策略進行任何更改。

但是,有幾點需要注意:

  • Queue-CQueue-D需要確認訂閱。 最簡單的方法是查看訂閱主題后發送到隊列的初始消息,復制消息中顯示的訂閱 URL,然后將其粘貼到 web 瀏覽器中。 這是一個一次性的過程。
  • Queue-CQueue-D將需要添加權限以允許Topic-B向其隊列發送消息。 您可能已經為Queue-A做好了准備。 該政策如下所示:
{
  "Version": "2012-10-17",
  "Id": "arn:aws:sqs:ap-southeast-2:ccc:my-queue/SQSDefaultPolicy",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "sqs:SendMessage",
      "Resource": "arn:aws:sqs:ap-southeast-2:ccc:my-queue",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:sns:ap-southeast-2:bbb:their-topic"
        }
      }
    }
  ]
}

也可以看看:

如果您不能依靠Account-B的所有者為您做任何事情,那么您唯一的選擇是:

  • 在 Account-A ( Topic-A ) 中創建您自己的 SNS 主題,您可以在其中管理訂閱
  • 創建一個 AWS Lambda function 將消息發送到Topic-A
  • 訂閱 Lambda function 到您現有的Queue-A ,以便發送到Queue-A任何消息都將重新發送到Topic-A
  • 讓所有帳戶都像使用Topic-A一樣使用 Topic- Topic-B

這樣,您可以使用現有的 SQS 隊列 ( Queue-A ) 作為您控制下的新 SNS 主題 ( Topic-A ) 的“中繼”。 您還需要將當前從Queue-A使用的應用程序更改為從訂閱Topic-A的新隊列中使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM