

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

# 設定 Amazon CloudSearch 的存取
<a name="configuring-access"></a>

您可以使用 AWS Identity and Access Management (IAM) 存取政策來控制對 Amazon CloudSearch 組態服務和每個搜尋網域的文件、搜尋和建議服務的存取。IAM 存取政策是 JSON 文件，明確列出許可，以定義允許人員或程序執行的動作。如需 IAM 存取政策的簡介，請參閱 [AWS IAM 政策概觀](https://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html)。

您可以獨立控制對 Amazon CloudSearch 組態服務 APIs和網域服務 APIs存取。例如，您可能選擇限制誰可以修改您的生產網域組態，但允許團隊成員建立及管理其自身網域以進行開發和測試。同樣地，您可能將您的開發和測試網域設定為接受對上傳、搜尋及建議服務提交匿名請求，但鎖定您的生產網域使其僅接受由您的應用程式發出的已驗證請求。

AWS 收到請求時，會驗證該請求是否來自已知的 AWS 使用者，然後檢查相關政策以判定該使用者是否已獲授權使用請求的資源執行請求的動作。如果使用者未獲明確授予執行動作的許可，其請求將遭到拒絕。進行政策評估期間，若 AWS 遇到明確拒絕的狀況，拒絕效果將優先於任何實施中的明確允許效果。

**重要**  
若要啟用身分驗證，Amazon CloudSearch 請求必須使用存取金鑰簽署。除非您允許匿名存取網域的上傳、搜尋或建議服務。如需詳細資訊，請參閱[簽署請求常見問答集](what-is-cloudsearch.md#signing-requests)。

**Topics**
+ [撰寫 Amazon CloudSearch 的存取政策](#cloudsearch-access-policies)
+ [Amazon CloudSearch 政策範例](#policy-examples)
+ [Amazon CloudSearch console](#configuring-access-console)
+ [使用 設定 Amazon CloudSearch 的存取 AWS CLI](#configuring-access-clt)
+ [使用 AWS 開發套件設定對網域各個端點的存取權](#configuring-access-sdk)

## 撰寫 Amazon CloudSearch 的存取政策
<a name="cloudsearch-access-policies"></a>

Amazon CloudSearch 同時支援*使用者型政策**和資源型政策*：
+ 以**使用者為基礎的政策**會連接到特定的 IAM 角色、群組或使用者。以使用者為基礎的政策指定了人員或程序能夠存取您帳戶的哪些搜尋網域及其可執行的動作。若要將使用者型政策連接至使用者、群組或角色，您可以使用 IAM 主控台 AWS CLI或 AWS SDKs。**您必須定義以使用者為基礎的政策，以控制對 Amazon CloudSearch 組態服務動作的存取。**（此內容中的*使用者*不一定是人員，只是具有相關聯許可的身分。 例如，您可以建立使用者來代表需要登入資料才能將搜尋請求提交到您的網域的應用程式。)
+ Amazon CloudSearch **的資源型政策**會連接至特定搜尋網域。以資源為基礎的政策指定了誰能夠存取該搜尋網域及其可使用網域的哪些服務。以資源為基礎的政策僅控制對特定網域的文件、搜尋和建議服務的存取；它們無法用於設定對 Amazon CloudSearch 組態服務動作的存取。若要將資源型政策連接至網域，您可以使用 Amazon CloudSearch 主控台 AWS CLI 或 AWS SDKs。

一般而言，我們建議透過設定以使用者為基礎的政策來管理對 Amazon CloudSearch APIs存取。這讓您得以集中一處管理所有各項許可，而且您需要進行的任何變更幾乎都能立即生效。不過，若要允許公開存取網域的搜尋服務或根據 IP 位址限制存取，您必須為網域設定以資源為基礎的政策 (建議您盡早將舊有的 IP 存取政策更換為以使用者為基礎的政策)。您也可使用以資源為基礎的政策，方便允許其他帳戶存取網域。請切記，處理網域以資源為基礎的政策變更，所需時間遠比以使用者為基礎的政策套用變更還要久。

IAM 主控台可協助您為 Amazon CloudSearch 撰寫使用者型和資源型政策。如需詳細資訊，請參閱[管理 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)。

### Amazon CloudSearch 存取政策的內容
<a name="access-policy-contents"></a>

您可以在 Amazon CloudSearch 的存取政策中指定下列資訊：
+ `Version` 指定陳述式所相容的政策語言版本。版本一律設為 `2012-10-17 `。
+ `Resource` 是套用使用者型政策之網域的 ARN (Amazon Resource Name)。 `Resource` 不會在透過 Amazon CloudSearch 組態服務設定的資源型政策中指定，因為政策會直接連接至資源。如需 Amazon CloudSearch ARNs 的詳細資訊，請參閱 [Amazon CloudSearch ARNs](#cloudsearch-arns)。
+ `Effect` 指定陳述式授權或禁止存取指定的動作。其必須是 `Allow` 或 `Deny`。
+ `Sid` 是選用字串，可用於為政策陳述式提供描述性名稱。
+ `Action` 指定套用陳述式的 Amazon CloudSearch 動作。如需所有支援的動作，請參閱 [Amazon CloudSearch 動作](#cloudsearch-actions)。當您需要對選定使用者授予管理存取權時，可使用萬用字元 (\$1) 做為動作，以設定供其存取所有動作 （在此情況下，您可能也想要啟用多重要素授權，以提高安全性。 如需詳細資訊，請參閱[設定受 MFA 保護的 API 存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingMFA.html)。) 動作名稱也支援使用萬用字元。例如，`"Action":["cloudsearch:Describe*]` 將匹配組態服務的所有 `Describe` 動作，像是 `DescribeDomains` 和 `DescribeServiceAccessPolicies`。
+ `Condition` 指定政策生效的條件。設定根據 IP 匿名存取時，即是指定要套用存取規則的 IP 位址，例如 `"IpAddress": {"aws:SourceIp": ["192.0.2.0/32"]}`。
+ `Principal` 在資源型政策中指定允許存取網域的人員。`Principal`在透過 IAM 設定的使用者型政策中，不會指定 。資源型政策`Principal`的值可以指定您自己帳戶中的其他 AWS 帳戶或使用者。例如，若要授予帳戶 555555555555 的存取權，您可以指定 `"Principal":{"AWS":["arn:aws:iam::555555555555:root"]}`。指定萬用字元 (\$1) 將允許匿名存取網域。匿名存取的方式並不建議。若允許匿名存取，您應至少指定一項條件，以限制哪些 IP 位址可向網域提交請求。如需詳細資訊，請參閱[授予選定的 IP 位址存取網域](#ip-based-policy)。

如需 Amazon CloudSearch 存取政策的範例，請參閱 [Amazon CloudSearch 政策範例](#policy-examples)。

#### Amazon CloudSearch ARNs
<a name="cloudsearch-arns"></a>

政策的 Amazon Resource Name (ARN) 獨特指定將套用該政策的網域。ARN 是 AWS 用於識別資源的標準格式。ARN 當中的 12 位數號碼是您的 AWS 帳戶 ID。Amazon CloudSearch ARNs的格式為 `arn:aws:cloudsearch:REGION:ACCOUNT-ID:domain/DOMAIN-NAME`。

以下清單說明 ARN 當中的可變元素：
+ `REGION` 是您設定許可的 Amazon CloudSearch 網域所在的 AWS 區域。`REGION` 可使用萬用字元 (\$1) 以代表所有區域。
+ `ACCOUNT-ID` 是沒有連字號的 AWS 帳戶 ID；例如 111122223333。
+ `DOMAIN-NAME` 識別特定的搜尋網域。`DOMAIN-NAME` 可使用萬用字元 (\$1) 以代表您的帳戶在指定的區域內的所有網域。如果您有多個網域其名稱開頭的字首相同，您即可使用萬用字元以匹配所有這些網域。例如，`dev-*` 將匹配 `dev-test`、`dev-movies`、`dev-sandbox` 等。請注意，若您使用同樣的字首為新網域命名，政策亦將套用到該新網域。

例如，以下 ARN 識別帳戶 111122223333 所`us-east-1`擁有區域中的`movies`網域：

```
arn:aws:cloudsearch:us-east-1:111122223333:domain/movies
```

以下範例示範以使用者為基礎的政策如何使用 ARN 指定資源。

網域的 ARN 會顯示在 Amazon CloudSearch 主控台的網域儀表板上，也可以透過呼叫 來取得`DescribeDomains`。

**重要**  
為使用 2011-02-01 API 建立的網域指定 ARN 時，您必須使用先前的 Amazon CloudSearch 服務名稱 `cs`。例如 `arn:aws:cs:us-east-1:111122223333:domain/movies`。如果您需要定義設定 2011 和 2013 網域存取的政策，請務必為每個網域指定正確的 ARN 格式。如需詳細資訊，請參閱[組態服務存取政策無作用](troubleshooting.md#troubleshooting-configuration-access-policies)。

#### Amazon CloudSearch 動作
<a name="cloudsearch-actions"></a>

您指定的動作會控制陳述式套用的 Amazon CloudSearch APIs。所有 Amazon CloudSearch 動作都以 為字首`cloudsearch:`，例如 `cloudsearch:search`。以下清單列出支援的動作：
+ `cloudsearch:document` 允許存取文件服務 API。需具備使用 `document` 動作的許可，才能上傳文件至搜尋網域以編製索引。
+ `cloudsearch:search` 允許存取搜尋 API。需具備使用 `search` 動作的許可，才能向網域提交搜尋請求。
+ `cloudsearch:suggest` 允許存取建議 API。需具備使用 `suggest` 動作的許可，才能向網域取得建議。
+ `cloudsearch:CONFIGURATION-ACTION` 允許存取指定的組態服務動作。存取 Amazon CloudSearch 主控台需要使用 `DescribeDomains`和 `ListDomainNames`組態動作的許可。組態動作僅能由以使用者為基礎的政策指定。如需完整的動作清單，請參閱[動作](API_Operations.md)。

## Amazon CloudSearch 政策範例
<a name="policy-examples"></a>

本節提供一些 Amazon CloudSearch 存取政策的範例。

**Topics**
+ [授予 Amazon CloudSearch Configuration Service 的唯讀存取權](#read-only-configuration-policy)
+ [授予對所有 Amazon CloudSearch Configuration Service 動作的存取權](#full-configuration-policy)
+ [授予對所有 Amazon CloudSearch Services 的無限制存取權](#universal-policy)
+ [授予將文件上傳至 Amazon CloudSearch 網域的許可](#document-upload-policy)
+ [授予 Amazon CloudSearch 對另一個 AWS 帳戶的存取權](#cross-account-policy)
+ [授予從所選 IP 地址存取 Amazon CloudSearch 網域的權限](#ip-based-policy)
+ [授予 Amazon CloudSearch 網域搜尋服務的公開存取權](#public-access-policy)

### 授予 Amazon CloudSearch Configuration Service 的唯讀存取權
<a name="read-only-configuration-policy"></a>

您可透過僅允許以下動作，授予唯讀存取組態服務。若您想要允許使用者檢視生產網域的組態但不得進行任何變更，這會非常受用。
+ `cloudsearch:DescribeAnalysisSchemes`
+ `cloudsearch:DescribeAvailabilityOptions`
+ `cloudsearch:DescribeDomains`
+ `cloudsearch:DescribeExpressions`
+ `cloudsearch:DescribeIndexFields`
+ `cloudsearch:DescribeScalingParameters`
+ `cloudsearch:DescribeServiceAccessPolicies`
+ `cloudsearch:DescribeSuggesters`
+ `cloudsearch:ListDomainNames`

下列使用者型政策授予帳戶 555555555555 所擁有`movies`網域的組態服務的唯讀存取權。此政策使用萬用字元指定動作，因為其將授予存取所有開頭為 *Describe* 或 *List* 的動作。請注意，這樣做也會授予對爾後可能新增至 API 的任何描述或列出動作進行存取。

### 授予對所有 Amazon CloudSearch Configuration Service 動作的存取權
<a name="full-configuration-policy"></a>

您可以透過包含 `Allow`陳述式來授予對所有組態服務動作的存取權，而非網域服務動作的存取權，以授予對所有 Amazon CloudSearch 組態服務動作的存取權。這讓您得以授予管理存取權，但不授權使用者上傳資料或從網域擷取資料。其中一種方法是使用萬用字元授予所有 Amazon CloudSearch 動作的存取權，然後包含拒絕陳述式，以封鎖對網域服務動作的存取。下列以使用者為基礎的政策會授予 `us-west-2` 區域中 111122223333 帳戶所擁有之所有網域的組態服務存取權。

### 授予對所有 Amazon CloudSearch Services 的無限制存取權
<a name="universal-policy"></a>

您可以授予對所有 Amazon CloudSearch 服務的無限制存取權，包括所有組態服務動作，以及具有使用者型政策的所有網域服務。為此，動作、區域和網域名稱請指定萬用字元。下列政策可讓使用者存取 111122223333 帳戶擁有之任何區域中任何網域的所有 Amazon CloudSearch 動作。

### 授予將文件上傳至 Amazon CloudSearch 網域的許可
<a name="document-upload-policy"></a>

您可以指定 `cloudsearch:document`動作，授予使用者將文件上傳至搜尋網域的許可。例如，下列使用者型政策可讓使用者將文件上傳至 111122223333帳戶所`us-east-1`擁有的 `movies` 網域。

### 授予 Amazon CloudSearch 對另一個 AWS 帳戶的存取權
<a name="cross-account-policy"></a>

設定跨帳戶存取 CloudSearch 網域的選項有兩種：


****  

| 選項 | Description | 
| --- | --- | 
| 設定 IAM 角色以進行跨帳戶存取。 | 提高安全性，但簽署請求的過程複雜。如需詳細資訊，請參閱 IAM 文件中的[ 使用 IAM 角色跨帳戶存取 API](https://docs.aws.amazon.com/IAM/latest/UserGuide/cross-acct-access.html)。 | 
| 附加以資源為基礎的政策至 CloudSearch 網域，並且附加以使用者為基礎的受管政策至 IAM 角色。 | 實作較為容易。如需詳細資訊，請參閱 IAM 文件中的[建立角色對 IAM 使用者委派許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)及[演練：使用 IAM 角色對您所擁有的帳戶委派跨 AWS 帳戶存取權](https://docs.aws.amazon.com/IAM/latest/UserGuide/walkthru_cross-account-with-roles.html)。 | 

本主題提供的範例採用第二種選項，為 CloudSearch 網域添加以資源為基礎的政策。假設帳戶 \$11 為帳戶 ID `111111111111` 所擁有，而帳戶 \$12 為帳戶 ID `999999999999` 所擁有。帳戶 \$11 希望授予存取權讓帳戶 \$12 使用 `movies` 網域的搜尋服務，共需要兩個步驟：

1. 帳戶 \$11 使用授予帳戶 \$12 存取權的 Amazon CloudSearch 主控台，將資源型政策連接到網域。

1. 帳戶 \$12 使用 IAM 主控台，將使用者型受管政策連接至該帳戶擁有的 IAM 角色。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	            
     "Statement": [
       {
         "Effect": "Allow",
         "Action": ["cloudsearch:search"],
         "Resource": "arn:aws:cloudsearch:us-east-1:111111111111:domain/movies"
       }
     ]
   }
   ```

------

**重要**  
若要設定 Amazon CloudSearch 以資源為基礎的政策，您必須具備使用 `cloudsearch:UpdateServiceAccessPolicies` 動作的許可。

### 授予從所選 IP 地址存取 Amazon CloudSearch 網域的權限
<a name="ip-based-policy"></a>

 透過 Amazon CloudSearch 組態服務設定的資源型存取政策支援匿名存取，可讓您將未簽署的請求提交至搜尋網域的服務。若要允許選定的 IP 位址進行匿名存取，政策中的 `Principal` 值請使用萬用字元，`Condition` 元素則指定允許的 IP 位址。

**重要**  
允許選定的 IP 位址進行匿名存取本質上比需要持有使用者登入資料才能存取搜尋網域較不安全。建議您勿允許匿名存取，即使是只限允許選定的 IP 位址進行存取。若您目前允許匿名存取，即應將您的應用程式升級為提交經簽署的請求，並透過設定以使用者為基礎或以資源為基礎的政策來控制存取權。

如果您要建立以資源為基礎的政策，以授予來自 Amazon EC2 執行個體的請求存取權，您需要指定執行個體的公有 IP 地址。

IP 位址是以標準無類別網域間路由 (CIDR) 格式指定。例如，10.24.34.0/24 指定範圍 10.24.34.0 - 10.24.34.255，而 10.24.34.0/32 指定單一 IP 地址 10.24.34.0。如需 CIDR 表示法的詳細資訊，請參閱 [RFC 4632](http://www.rfc-editor.org/rfc/rfc4632.txt)。

例如，下列政策授予從 IP 地址 192.0.2.0/32 存取 AWS 帳戶 111122223333 所擁有`movies`網域的搜尋動作。

### 授予 Amazon CloudSearch 網域搜尋服務的公開存取權
<a name="public-access-policy"></a>

 如果您的網域需要允許公開存取其搜尋端點，則可設定以資源為基礎無任何條件的政策。這會使得任何 IP 位址皆可傳送未經簽署的請求。

**重要**  
允許公開存取搜尋網域意味著您將無法掌控向網域提交的請求量。心懷不軌的使用者可能會提交請求灌爆您的網域，以致影響到正當使用者並損及您的營運成本。

例如，下列政策會授予 AWS 帳戶 111122223333 所擁有`movies`網域的搜尋動作的公開存取權。

## 使用 AWS 管理主控台設定 Amazon CloudSearch 的存取
<a name="configuring-access-console"></a>

**設定以使用者為基礎的政策**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 透過將政策連接至使用者、群組或角色來設定 Amazon CloudSearch 許可。如需詳細資訊，請參閱[管理政策 (AWS 管理主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html#AddingPermissions_Console)。如需 Amazon CloudSearch 使用者型政策的詳細資訊，請參閱 [撰寫 Amazon CloudSearch 的存取政策](#cloudsearch-access-policies)。

**設定以資源為基礎的政策**

1. 登入 AWS 管理主控台，並在 [https://console.aws.amazon.com/cloudsearch/home](https://console.aws.amazon.com/cloudsearch/home)：// 開啟 Amazon CloudSearch 主控台。

1. 選擇您要設定的網域名稱。

1. 在**網域組態**索引標籤上，選擇**存取政策**旁的**編輯**。

1. 當您完成網域存取政策的變更時，請選擇**提交**。

當 Amazon CloudSearch 更新存取政策時，您的網域會保持 `Processing` 狀態。

## 使用 設定 Amazon CloudSearch 的存取 AWS CLI
<a name="configuring-access-clt"></a>

您可以使用 為 Amazon CloudSearch 設定使用者型政策和資源型政策 AWS CLI。如需安裝和設定 的詳細資訊 AWS CLI，請參閱[AWS Command Line Interface 《 使用者指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。

**設定以使用者為基礎的政策**
+ 使用 、 或 `aws put-role-policy`命令將政策連接至使用者、群組`aws put-group-policy`或角色`aws put-user-policy`，以設定 Amazon CloudSearch 許可。如需詳細資訊，請參閱[管理政策 (AWS 管理主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html#AddingPermissions_Console)。如需 Amazon CloudSearch 使用者型政策的詳細資訊，請參閱 [撰寫 Amazon CloudSearch 的存取政策](#cloudsearch-access-policies)。

**設定以資源為基礎的政策**
+ 執行 `aws cloudsearch update-service-access-policies` 命令，並使用 `--access-policies` 選項指定存取政策。存取政策必須用引號括住，而且存取政策內的所有引號必須用反斜線逸出。如需 Amazon CloudSearch 資源型政策的詳細資訊，請參閱 [撰寫 Amazon CloudSearch 的存取政策](#cloudsearch-access-policies)。

  以下範例設定 `movies` 網域將接受由 IP 位址 `192.0.2.0` 發出的搜尋請求。

  ```
  aws cloudsearch update-service-access-policies --domain-name movies 
  --access-policies "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":[{
    \"Sid\":\"search_only\",
    \"Effect\":\"Allow\",
    \"Principal\": \"*\",
    \"Action\":\"cloudsearch:search\",
    \"Condition\":{\"IpAddress\":{\"aws:SourceIp\":\"192.0.2.0/32\"}}}
  ]}"
  {
    "AccessPolicies": {
      "Status": {
        "PendingDeletion": false, 
        "State": "Processing", 
        "CreationDate": "2014-04-30T22:07:30Z", 
        "UpdateVersion": 9, 
        "UpdateDate": "2014-04-30T22:07:30Z"
      }, 
      "Options":  
        "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":[{\"Sid\":\"\",
          \"Effect\":\"Allow\",\"Principal\":\"*\",
          \"Action\":\"cloudsearch:search\",
          \"Condition\":{\"IpAddress\":{\"aws:SourceIp\":
          \"192.0.2.0/32\"}}}]}"
      }
  }
  ```

更新以資源為基礎的存取政策需要一些時間才能完成。您可以使用 `aws cloudsearch describe-service-access-policies` 命令檢查政策的狀態。政策一旦套用之後，政策的狀態將變更為 `Active`。

您可以使用 `aws cloudsearch describe-service-access-policies` 命令擷取網域的政策。

## 使用 AWS 開發套件設定對網域各個端點的存取權
<a name="configuring-access-sdk"></a>

AWS SDKs (Android 和 iOS SDKs除外） 支援 Amazon CloudSearch 組態 API 中定義的所有 Amazon CloudSearch 動作，包括 `UpdateServiceAccessPolicies`。如需安裝與使用 AWS 開發套件的詳細資訊，請參閱 [AWS 軟體開發套件](https://aws.amazon.com/code)。