為 Amazon 配置訪問 CloudSearch - Amazon CloudSearch

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

為 Amazon 配置訪問 CloudSearch

您可以使用 AWS Identity and Access Management (IAM) 存取政策來控制對 Amazon CloudSearch 組態服務和每個搜尋網域文件、搜尋和建議服務的存取。IAM 存取政策是一份 JSON 文件,其中明確列出許可,這些許可定義允許人員或程序執行的動作。如需 IAM 存取政策的簡介,請參閱 AWS IAM 政策概觀

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

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

重要

若要啟用身份驗證,Amazon CloudSearch 請求必須使用存取金鑰簽署。除非您允許匿名存取網域的上傳、搜尋或建議服務。如需詳細資訊,請參閱 簽署請求

為 Amazon 編寫訪問政策 CloudSearch

Amazon 同時 CloudSearch 支援使用者型政策和以資源為基礎的政策:

  • 以使用者為基礎的政策會附加至特定 IAM 角色、群組或使用者。以使用者為基礎的政策指定了人員或程序能夠存取您帳戶的哪些搜尋網域及其可執行的動作。若要將以使用者為基礎的政策附加到使用者、群組或角色,請使用 IAM 主控台AWS CLI或 AWS 開發套件。您必須定義以使用者為基礎的政策,以控制對 Amazon CloudSearch 組態服務動作的存取。(這種情況下的用戶不一定是一個人,它只是具有相關權限的身份。 例如,您可以建立使用者來代表需要擁有認證才能將搜尋要求提交至您的網域的應用程式。)

  • Amazon CloudSearch 以資源為基礎的政策附加到特定的搜尋網域。以資源為基礎的政策指定了誰能夠存取該搜尋網域及其可使用網域的哪些服務。以資源為基礎的政策僅控制對特定網域文件、搜尋和建議服務的存取;它們無法用於設定對 Amazon CloudSearch 組態服務動作的存取。若要將以資源為基礎的政策附加到網域,請使用 Amazon CloudSearch 主控台AWS CLI或 AWS 開發套件。

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

IAM 主控台可協助您為 Amazon 撰寫以使用者為基礎和以資源為基礎的政策。 CloudSearch如需詳細資訊,請參閱管理 IAM 政策

Amazon 訪問政策的內容 CloudSearch

您可以在 Amazon 的存取政策中指定下列資訊 CloudSearch:

  • Version 指定陳述式所相容的政策語言版本。版本一律設為 2012-10-17

  • Resource是套用使用者政策之網域的 ARN (Amazon 資源名稱)。 Resource未在透過 Amazon CloudSearch 組態服務設定的以資源為基礎的政策中指定,因為政策會直接附加至資源。如需有關 Amazon CloudSearch ARN 的詳細資訊,請參閱Amazon CloudSearch ARN

  • Effect 指定陳述式授權或禁止存取指定的動作。其必須是 AllowDeny

  • Sid 是選用字串,可用於為政策陳述式提供描述性名稱。

  • Action指定該聲明適用於哪些 Amazon CloudSearch 操作。如需所有支援的動作,請參閱 Amazon CloudSearch 行動。當您需要對選定使用者授予管理存取權時,可使用萬用字元 (*) 做為動作,以設定供其存取所有動作 在這種情況下,您可能還希望啟用多因素授權以獲得額外的安全性。 如需詳細資訊,請參閱設定 MFA 保護的 API 存取權。) 動作名稱也支援使用萬用字元。例如,"Action":["cloudsearch:Describe*] 將匹配組態服務的所有 Describe 動作,像是 DescribeDomainsDescribeServiceAccessPolicies

  • Condition 指定政策生效的條件。設定根據 IP 匿名存取時,即是指定要套用存取規則的 IP 位址,例如 "IpAddress": {"aws:SourceIp": ["192.0.2.0/32"]}

  • Principal指定允許哪些人存取以資源為基礎的策略中的網域。 Principal未在透過 IAM 設定的以使用者為基礎的政策中指定。以資源為基礎的政策Principal值可以指定您自己帳戶中的其他 AWS 帳戶或使用者。例如,若要授與帳戶 5555555555 的存取權,您必須指定。"Principal":{"AWS":["arn:aws:iam::555555555555:root"]}指定萬用字元 (*) 將允許匿名存取網域。匿名存取的方式並不建議。若允許匿名存取,您應至少指定一項條件,以限制哪些 IP 位址可向網域提交請求。如需詳細資訊,請參閱 授予選定的 IP 位址存取網域

如需 Amazon 存取政策的範例 CloudSearch,請參閱Amazon CloudSearch 政策示例

Amazon CloudSearch ARN

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

以下清單說明 ARN 當中的可變元素:

  • REGION是您設定許可之 Amazon CloudSearch 網域所在的 AWS 區域。REGION 可使用萬用字元 (*) 以代表所有區域。

  • ACCOUNT-ID是您的 AWS 帳戶識別碼,不含連字號;例如,111122223333。

  • DOMAIN-NAME 識別特定的搜尋網域。DOMAIN-NAME 可使用萬用字元 (*) 以代表您的帳戶在指定的區域內的所有網域。如果您有多個網域其名稱開頭的字首相同,您即可使用萬用字元以匹配所有這些網域。例如,dev-* 將匹配 dev-testdev-moviesdev-sandbox 等。請注意,若您使用同樣的字首為新網域命名,政策亦將套用到該新網域。

例如,下列 ARN 會識別帳戶 111122223333 所擁有之us-east-1movies域中的網域:

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

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

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

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

重要

為使用 2011-02-01 API 建立的網域指定 ARN 時,您必須使用以前的 Amazon CloudSearch 服務名稱。cs例如 arn:aws:cs:us-east-1:111122223333:domain/movies。如果您需要定義設定 2011 和 2013 網域存取權的原則,請務必為每個網域指定正確的 ARN 格式。如需詳細資訊,請參閱 組態服務存取政策無作用

Amazon CloudSearch 行動

您指定的動作會控制該陳述式適用於哪些 Amazon CloudSearch API。所有 Amazon CloudSearch 動作都以前綴cloudsearch:,例如cloudsearch:search. 以下清單列出支援的動作:

  • cloudsearch:document 允許存取文件服務 API。需具備使用 document 動作的許可,才能上傳文件至搜尋網域以編製索引。

  • cloudsearch:search 允許存取搜尋 API。需具備使用 search 動作的許可,才能向網域提交搜尋請求。

  • cloudsearch:suggest 允許存取建議 API。需具備使用 suggest 動作的許可,才能向網域取得建議。

  • cloudsearch:CONFIGURATION-ACTION 允許存取指定的組態服務動作。存取 Amazon CloudSearch 主控台需要使用DescribeDomainsListDomainNames組態動作的權限。組態動作僅能由以使用者為基礎的政策指定。如需完整的動作清單,請參閱動作

Amazon CloudSearch 政策示例

本節介紹 Amazon CloudSearch 存取政策的幾個範例。

授與 Amazon CloudSearch 組態服務的唯讀存取權

您可透過僅允許以下動作,授予唯讀存取組態服務。若您想要允許使用者檢視生產網域的組態但不得進行任何變更,這會非常受用。

  • cloudsearch:DescribeAnalysisSchemes

  • cloudsearch:DescribeAvailabilityOptions

  • cloudsearch:DescribeDomains

  • cloudsearch:DescribeExpressions

  • cloudsearch:DescribeIndexFields

  • cloudsearch:DescribeScalingParameters

  • cloudsearch:DescribeServiceAccessPolicies

  • cloudsearch:DescribeSuggesters

  • cloudsearch:ListDomainNames

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

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["cloudsearch:Describe*", "cloudsearch:List*"], "Resource": "arn:aws:cloudsearch:us-east-1:555555555555:domain/movies" } ] }

授予所有 Amazon CloudSearch 組態服務動作的存取權

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

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["cloudsearch:*"], "Resource": "arn:aws:cloudsearch:us-west-2:111122223333:domain/*" }, { "Effect": "Deny", "Action": ["cloudsearch:document", "cloudsearch:search", "cloudsearch:suggest"], "Resource": "arn:aws:cloudsearch:us-west-2:111122223333:domain/*" } ] }

授予對所有 Amazon CloudSearch 服務的無限制訪問

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

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["cloudsearch:*"], "Resource": "arn:aws:cloudsearch:*:111122223333:domain/*" } ] }

授予將文件上傳到 Amazon CloudSearch 網域的權限

您可以指定cloudsearch:document動作,授與使用者將文件上載至搜尋網域的權限。例如,下列以使用者為基礎的策略可讓使用者將文件上傳至 111122223333 帳戶us-east-1所擁有的movies網域。

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

將 Amazon CloudSearch 存取權授予另一個 AWS 帳戶

您有兩個選項可以設定 CloudSearch網域的跨帳戶存取:

選項 描述
設定 IAM 角色以進行跨帳戶存取。 提高安全性,但簽署請求的過程複雜。如需詳細資訊,請參閱 IAM 文件中的 使用 IAM 角色跨帳戶存取 API
將以資源為基礎的政策附加到 CloudSearch 網域,並將以使用者為基礎的受管政策附加到 IAM 角色。 實作較為容易。如需詳細資訊,請參閱 IAM 文件中的建立角色對 IAM 使用者委派許可演練:使用 IAM 角色對您所擁有的帳戶委派跨 AWS 帳戶存取權

本主題提供第二個選項的範例,即將以資源為基礎的原則新增至 CloudSearch 網域。假設帳戶 #1 為帳戶 ID 111111111111 所擁有,而帳戶 #2 為帳戶 ID 999999999999 所擁有。帳戶 #1 希望授予存取權讓帳戶 #2 使用 movies 網域的搜尋服務,共需要兩個步驟:

  1. 帳戶 #1 使用授予帳戶 #2 存取權的 Amazon CloudSearch 主控台將以資源為基礎的政策附加至網域。

    { "Version":"2012-10-17", "Statement":[ { "Sid":"search_only", "Effect":"Allow", "Action":["cloudsearch:search"], "Principal":{"AWS":["arn:aws:iam::999999999999:root"]} } ] }
  2. 帳戶 #2 會使用 IAM 主控台將以使用者為基礎的受管政策附加至該帳戶擁有的 IAM 角色。

    { "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 網域的存取權

透過 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

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

{ "Version":"2012-10-17", "Statement":[ { "Sid":"search_only", "Effect":"Allow", "Principal":"*", "Action":["cloudsearch:search"], "Condition":{"IpAddress":{"aws:SourceIp":"192.0.2.0/32"}} } ] }

授予 Amazon CloudSearch 網域搜尋服務的公開存取權

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

重要

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

例如,下列政策授予公眾存取 AWS 帳戶 111122223333 所擁有的movies網域的搜尋動作。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"public_search", "Effect":"Allow", "Principal":"*", "Action":["cloudsearch:search"] } ] }

CloudSearch 使用 AWS 管理主控台設定 Amazon 的存取

設定以使用者為基礎的政策
  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 透過將政策附加到使用者、群組或角色來設定 Amazon CloudSearch 許可。如需詳細資訊,請參閱管理政策 (AWS 管理主控台)。如需 Amazon 以使用者為基礎的政策的詳細資訊, CloudSearch 請參閱為 Amazon 編寫訪問政策 CloudSearch

設定以資源為基礎的政策
  1. 登入 AWS 管理主控台,然後在 https://console.aws.amazon.com/cloudsearch/home 開啟 Amazon CloudSearch 主控台。

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

  3. 網域組態索引標籤上,選擇 [存取原則] 旁邊的 [編輯]。

  4. 完成網域存取原則的變更後,請選擇 [提交]。

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

設定 Amazon CloudSearch 的存取 AWS CLI

您可以使 Amazon CloudSearch . AWS CLI 如需有關安裝與設定 AWS CLI 的資訊,請參閱 AWS Command Line Interface 使用者指南

設定以使用者為基礎的政策
設定以資源為基礎的政策
  • 執行 aws cloudsearch update-service-access-policies 命令,並使用 --access-policies 選項指定存取政策。存取政策必須用引號括住,而且存取政策內的所有引號必須用反斜線逸出。如需 Amazon 以資源為基礎的政策的詳細資訊, CloudSearch 請參閱為 Amazon 編寫訪問政策 CloudSearch

    以下範例設定 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 開發套件設定對網域各個端點的存取權

AWS 開發套件 (Android 和 iOS 開發套件除外) 支援 Amazon CloudSearch 設定 API 中定義的所有 Amazon CloudSearch 動作,包括。UpdateServiceAccessPolicies如需安裝與使用 AWS 開發套件的詳細資訊,請參閱 AWS 軟體開發套件