

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon SNS 主題的許可
<a name="sns-topic-policy"></a>

**不支援加密的 Amazon SNS**  
AWS Config 不支援加密的 Amazon SNS 主題。

本主題說明如何設定 AWS Config 以交付不同帳戶所擁有的 Amazon SNS 主題。 AWS Config 必須具備將通知傳送至 Amazon SNS 主題的必要許可。

當 AWS Config 主控台為您建立新的 Amazon SNS 主題時， 會 AWS Config 授予必要的許可。如果您選擇現有的 Amazon SNS 主題， 會確保 Amazon SNS 主題包含必要的許可，並遵循安全最佳實務。

**不支援跨區域 Amazon SNS 主題**  
 AWS Config 目前僅支援相同 AWS 區域 帳戶和跨帳戶的存取。

**Contents**
+ [使用 IAM 角色時的 Amazon SNS 主題必要許可](#required-permissions-snstopic-in-another-account)
+ [使用服務連結角色時的 Amazon SNS 主題必要許可](#required-permissions-snstopic-using-servicelinkedrole)
+ [授予 Amazon SNS 主題的 AWS Config 存取權](#granting-access-snstopic)
+ [Amazon SNS 主題故障診斷](#troubleshooting-for-snstopic-using-servicelinkedrole)

## 使用 IAM 角色時的 Amazon SNS 主題必要許可
<a name="required-permissions-snstopic-in-another-account"></a>

您可以將許可政策連接到其他帳戶擁有的 Amazon SNS 主題。如果想要使用其他帳戶的 Amazon SNS 主題，請務必將下列政策連接至現有的 Amazon SNS 主題。

```
{
  "Id": "Policy_ID",
  "Statement": [
    {
      "Sid": "AWSConfigSNSPolicy",
      "Action": [
        "sns:Publish"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:sns:region:account-id:myTopic",
      "Principal": {
        "AWS": [
          "account-id1",
          "account-id2",
          "account-id3"
        ]
      }
    }
  ]
}
```

對 `Resource` 金鑰而言，*account-id* 是主題擁有者的 AWS 帳戶編號。對於 *account-id1*、*account-id2* 和 *account-id3*，請使用將資料傳送至 Amazon SNS 主題 AWS 帳戶 的 。您可將 *region* 和 *myTopic* 替換為適當的值。

當 AWS Config 傳送通知至 Amazon SNS 主題時，會先嘗試使用 IAM 角色，但如果角色或 AWS 帳戶 沒有發佈至主題的許可，則此嘗試會失敗。在此情況下， 會再次 AWS Config 傳送通知，這次會以 AWS Config 服務委託人名稱 (SPN) 的形式傳送。發布成功之前，主題的存取政策必須授與 `config.amazonaws.com` 主體名稱的 `sns:Publish` 存取權。如果 IAM 角色無權向主題發布通知，您必須將存取政策 (下節說明) 連接至 Amazon SNS 主題，才能授權 AWS Config 存取 Amazon SNS 主題。

## 使用服務連結角色時的 Amazon SNS 主題必要許可
<a name="required-permissions-snstopic-using-servicelinkedrole"></a>

 AWS Config 服務連結角色沒有存取 Amazon SNS 主題的許可。因此，如果您 AWS Config 使用服務連結角色 (SLR) 設定 ， AWS Config 會改為以 AWS Config 服務主體身分傳送資訊。您需要將以下提及的存取政策連接至 Amazon SNS 主題，以授予將資訊傳送至 Amazon SNS 主題的 AWS Config 存取權。

在相同帳戶設定中，當 Amazon SNS 主題和 SLR 位於同一帳戶，且 Amazon SNS 政策授予 SLR "`sns:Publish`" 許可時，您不需要使用 AWS Config SPN。以下許可政策和安全性最佳實務建議適用於跨帳戶設定。

## 授予 Amazon SNS 主題的 AWS Config 存取權
<a name="granting-access-snstopic"></a>

此政策允許 AWS Config 傳送通知至 Amazon SNS 主題。若要授予從另一個帳戶 AWS Config 存取 Amazon SNS 主題的權限，您需要連接下列許可政策。

**注意**  
作為安全最佳實務，強烈建議您確保 僅透過限制對`AWS:SourceAccount`條件中所列帳戶的存取，代表預期的使用者 AWS Config 存取資源。

```
{
"Id": "Policy_ID",
"Statement": [
  {
    "Sid": "AWSConfigSNSPolicy",
    "Effect": "Allow",
    "Principal": {
      "Service": "config.amazonaws.com"
    },
    "Action": "sns:Publish",
      "Resource": "arn:aws:sns:region:account-id:myTopic",
        "Condition" : {
        "StringEquals": {
          "AWS:SourceAccount": [
            "account-id1",
            "account-id2",
            "account-id3"
          ]
        }
      }
    }
  ]
}
```

對 `Resource` 金鑰而言，*account-id* 是主題擁有者的 AWS 帳戶編號。對於 *account-id1*、*account-id2* 和 *account-id3*，請使用 AWS 帳戶 將資料傳送至 Amazon SNS 主題的 。您可將 *region* 和 *myTopic* 替換為適當的值。

您可以使用先前 Amazon SNS 主題政策中的 `AWS:SourceAccount`條件，限制 AWS Config 服務主體名稱 (SPN) 在代表特定帳戶執行操作時僅與 Amazon SNS 主題互動。

AWS Config 也支援限制服務主體名稱 AWS Config (SPN) 在代表特定 AWS Config 交付管道執行操作時僅與 S3 儲存貯體互動`AWS:SourceArn`的條件。使用 AWS Config 服務主體名稱 (SPN) 時， `AWS:SourceArn` 屬性一律會設定為 ，`arn:aws:config:sourceRegion:sourceAccountID:*`其中 `sourceRegion`是交付管道的區域，而 `sourceAccountID`是包含交付管道的帳戶 ID。如需 AWS Config 交付管道的詳細資訊，請參閱[管理交付管道](https://docs.aws.amazon.com/config/latest/developerguide/manage-delivery-channel.html)。例如，新增下列條件來限制 AWS Config 服務主體名稱 (SPN) 僅代表`us-east-1`帳戶 區域中的交付管道與您的 S3 儲存貯體互動`123456789012`：`"ArnLike": {"AWS:SourceArn": "arn:aws:config:us-east-1:123456789012:*"}`。

## Amazon SNS 主題故障診斷
<a name="troubleshooting-for-snstopic-using-servicelinkedrole"></a>

AWS Config 必須具有將通知傳送至 Amazon SNS 主題的許可。如果 Amazon SNS 主題無法接收通知，請確認擔任 AWS Config 的 IAM 角色具有必要的`sns:Publish`許可。