

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

# Amazon OpenSearch Serverless 的安全概觀
<a name="serverless-security"></a>

Amazon OpenSearch Serverless 的安全功能在以下方面與 Amazon OpenSearch Service 的安全功能有根本上的不同：


| 功能 | OpenSearch Service | OpenSearch Serverless | 
| --- | --- | --- | 
| 資料存取控制 | 資料存取由 IAM 政策和精細存取控制決定。 | 資料存取由資料存取政策決定。 | 
| 靜態加密 | 網域的靜態加密是選擇性。 | 集合需要靜態加密。 | 
| 安全設定和管理 | 您必須個別設定每個網域的網路、加密和資料存取。 | 您可以使用安全政策大規模管理多個集合的安全設定。 | 

下圖說明構成功能集合的安全元件。集合必須具有指派的加密金鑰、網路存取設定和相符的資料存取政策，以授予其資源許可。

![\[Diagram showing encryption, network, data access, and authentication policies for a collection.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-security.png)


**Topics**
+ [加密政策](#serverless-security-encryption)
+ [網路政策](#serverless-security-network)
+ [資料存取政策](#serverless-security-data-access)
+ [IAM 和 SAML 身分驗證](#serverless-security-authentication)
+ [基礎設施安全性](#serverless-infrastructure-security)
+ [開始使用 Amazon OpenSearch Serverless 中的安全功能](serverless-tutorials.md)
+ [Amazon OpenSearch Serverless 的身分和存取管理](security-iam-serverless.md)
+ [Amazon OpenSearch Serverless 中的加密](serverless-encryption.md)
+ [Amazon OpenSearch Serverless 的網路存取](serverless-network.md)
+ [Amazon OpenSearch Serverless 中的 FIPS 合規](fips-compliance-opensearch-serverless.md)
+ [Amazon OpenSearch Serverless 的資料存取控制](serverless-data-access.md)
+ [透過 的資料平面存取 AWS PrivateLink](serverless-vpc.md)
+ [透過 控制平面存取 AWS PrivateLink](serverless-vpc-cp.md)
+ [Amazon OpenSearch Serverless 的 SAML 身分驗證](serverless-saml.md)
+ [Amazon OpenSearch Serverless 的合規驗證](serverless-compliance-validation.md)

## 加密政策
<a name="serverless-security-encryption"></a>

[加密政策](serverless-encryption.md)會定義您的集合是使用 AWS 擁有的金鑰 還是客戶受管金鑰加密。加密政策由兩個元件組成：**資源模式**和**加密金鑰**。資源模式定義政策適用於哪個或哪些集合。加密金鑰決定如何保護相關聯的集合。

若要將政策套用至多個集合，請在政策規則中包含萬用字元 (\$1)。例如，下列政策適用於名稱以「logs」開頭的所有集合。

![\[Input field for specifying a prefix term or collection name, with "logs*" entered.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-security-encryption.png)


加密政策可簡化建立和管理集合的程序，尤其是以程式設計方式這樣做時。您可以指定名稱來建立集合，加密金鑰會在建立時自動指派給集合。

## 網路政策
<a name="serverless-security-network"></a>

[網路政策](serverless-network.md)會定義您的集合是否可私下存取，或從公有網路透過網際網路存取。私有集合可透過 OpenSearch Serverless 受管 VPC 端點，或使用私有存取的特定 Amazon Bedrock AWS 服務 存取。 *AWS 服務 *正如加密政策，網路政策可套用至多個集合，以便您大規模管理許多集合的網路存取。

網路政策由兩個元件組成：**存取類型**和**資源類型**。存取類型可以是公有或私有。資源類型決定您選擇的存取權是否套用至集合端點、OpenSearch Dashboards 端點，或兩者。

![\[Access type and resource type options for configuring network policies in OpenSearch.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-security-network.png)


如果您計劃在網路政策內設定 VPC 存取，您必須先建立一個或多個 [OpenSearch Serverless 受管 VPC 端點](serverless-vpc.md)。這些端點可讓您像在 VPC 中一樣存取 OpenSearch Serverless，無需使用網際網路閘道、NAT 裝置、VPN 連線或 Direct Connect 連線。

的私有存取 AWS 服務 只能套用至集合的 OpenSearch 端點，無法套用至 OpenSearch Dashboards 端點。 AWS 服務 無法授予 OpenSearch Dashboards 的存取權。

## 資料存取政策
<a name="serverless-security-data-access"></a>

[資料存取政策](serverless-data-access.md)定義您的使用者如何存取集合內的資料。資料存取政策會自動將存取許可指派給符合特定模式的集合和索引，以協助您大規模管理集合。可將多個政策套用至單一資源。

資料存取政策由一組規則組成，每個規則都有三個元件：**資源類型**、**授予的資源**和一組**許可**。資源類型可以是集合或索引。授予的資源可以是集合/索引名稱或具有萬用字元 (\$1) 的模式。許可清單指定政策授予存取權的 [OpenSearch API 操作](serverless-genref.md#serverless-operations)。此外，政策包含**主體**清單，其中指定要授予存取權的 IAM 角色、使用者和 SAML 身分。

![\[Selected principals and granted resources with permissions for collection and index access.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-data-access.png)


如需有關資料存取政策格式的詳細資訊，請參閱[政策語法](serverless-data-access.md#serverless-data-access-syntax)。

建立資料存取政策之前，您必須擁有一個或多個 IAM 角色或使用者或 SAML 身分，才能在政策中提供存取權。如需詳細資訊，請參閱下節。

**注意**  
將集合從公有切換到私有存取， 會移除 OpenSearch Serverless 集合主控台中的索引索引標籤。

## IAM 和 SAML 身分驗證
<a name="serverless-security-authentication"></a>

 IAM 主體和 SAML 身分是資料存取政策的其中一個建構區塊。在存取政策的 `principal` 陳述式中，您可以包含 IAM 角色、使用者和 SAML 身分。接著會將您在相關聯政策規則中指定的許可授予這些主體。

```
[
   {
      "Rules":[
         {
            "ResourceType":"index",
            "Resource":[
               "index/marketing/orders*"
            ],
            "Permission":[
               "aoss:*"
            ]
         }
      ],
      "Principal":[
         "arn:aws:iam::123456789012:user/Dale",
         "arn:aws:iam::123456789012:role/RegulatoryCompliance",
         "saml/123456789012/myprovider/user/Annie"
      ]
   }
]
```

您可以直接在 OpenSearch Serverless 中設定 SAML 身分驗證。如需詳細資訊，請參閱[Amazon OpenSearch Serverless 的 SAML 身分驗證](serverless-saml.md)。

## 基礎設施安全性
<a name="serverless-infrastructure-security"></a>

Amazon OpenSearch Serverless 受到 AWS 全球網路安全的保護。如需安全服務以及如何 AWS 保護基礎設施的資訊 AWS ，請參閱[AWS 雲端安全](https://aws.amazon.com/security/)。若要使用基礎設施安全的最佳實務來設計您的 AWS 環境，請參閱*安全支柱 AWS Well-Architected Framework* 中的[基礎設施保護](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)。

您可以使用 AWS 發佈的 API 呼叫，透過網路存取 Amazon OpenSearch Serverless。用戶端必須支援 Transport Layer Security (TLS)。我們需要 TLS 1.2 並建議使用 TLS 1.3。如需 TLS 1.3 支援的密碼清單，請參閱 Elastic Load Balancing 文件中的 [TLS 通訊協定和密碼](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#tls-protocols-ciphers)。

此外，您必須使用存取金鑰 ID 和與 IAM 主體相關聯的私密存取金鑰來簽署請求。或者，您可以使用 [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) 以產生暫時安全憑證以簽署請求。

# 開始使用 Amazon OpenSearch Serverless 中的安全功能
<a name="serverless-tutorials"></a>

下列教學課程可協助您開始使用 Amazon OpenSearch Serverless。兩個教學課程完成的基本步驟相同，但其中一個使用主控台，另一個則使用 AWS CLI。

請注意，這些教學課程中的使用案例皆已簡化。網路和安全政策都相當公開。在生產工作負載中，建議您設定更強大的安全功能，例如 SAML 身分驗證、VPC 存取權和限制性資料存取政策。

**Topics**
+ [教學課程：開始使用 Amazon OpenSearch Serverless 中的安全功能 (主控台)](gsg-serverless.md)
+ [教學課程：開始使用 Amazon OpenSearch Serverless (CLI) 中的安全功能](gsg-serverless-cli.md)

# 教學課程：開始使用 Amazon OpenSearch Serverless 中的安全功能 (主控台)
<a name="gsg-serverless"></a>

此教學課程會帶您逐步了解使用 Amazon OpenSearch Serverless 主控台建立和管理安全性政策的基本步驟。

在本教學課程中，您將完成下列步驟：

1. [設定許可](#gsgpermissions)

1. [建立加密政策](#gsg-encryption)

1. [建立網路政策](#gsg-network)

1. [設定資料存取政策](#gsg-data-access)

1. [建立集合](#gsgcreate-collection)

1. [上傳並搜尋資料](#gsgindex-collection)

本教學課程會逐步引導您使用 設定集合 AWS 管理主控台。如需使用 的相同步驟 AWS CLI，請參閱 [教學課程：開始使用 Amazon OpenSearch Serverless (CLI) 中的安全功能](gsg-serverless-cli.md)。

## 步驟 1：設定許可
<a name="gsgpermissions"></a>

**注意**  
如果您已經使用更廣泛的身分型政策，例如 `Action":"aoss:*"` 或 `Action":"*"`，則可以略過此步驟。不過，在生產環境中，我們建議您遵循最低權限原則，並且僅指派任務完成所需的最低許可。

為完成本教學課程，您必須具備正確的 IAM 許可。使用者或角色必須連接[身分型政策](security-iam-serverless.md#security-iam-serverless-id-based-policies)，該政策包含以下最低許可：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "aoss:ListCollections",
        "aoss:BatchGetCollection",
        "aoss:CreateCollection",
        "aoss:CreateSecurityPolicy",
        "aoss:GetSecurityPolicy",
        "aoss:ListSecurityPolicies",
        "aoss:CreateAccessPolicy",
        "aoss:GetAccessPolicy",
        "aoss:ListAccessPolicies"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

------

如需 OpenSearch Serverless 許可的完整清單，請參閱 [Amazon OpenSearch Serverless 的身分和存取管理](security-iam-serverless.md)。

## 步驟 2：建立加密政策
<a name="gsg-encryption"></a>

[加密政策](serverless-encryption.md)會指定 OpenSearch Serverless 用來加密集合的 AWS KMS 金鑰。您可以使用 AWS 受管金鑰 或不同的金鑰來加密集合。為確保本教學課程簡單易懂，我們將使用 AWS 受管金鑰加密集合。

**建立加密政策**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，展開 **Serverless** (無伺服器)，然後選擇 **Encryption policies** (加密政策)。

1. 選擇 **Create encryption policy** (建立加密政策)。

1. 將政策命名為 **books-policy**。如需相關描述，請輸入 **Encryption policy for books collection** (書籍集合的加密政策)。

1. 在 **Resources** (資源) 下，輸入 **books** (書籍)，這就是您將為集合命名的名稱。如果您想要更廣泛的名稱，可以包含星號 (`books*`)，以便將政策套用至以「書籍」一詞開頭的所有集合。

1. 對於**加密**，請保持選取**使用 AWS 擁有的金鑰**。

1. 選擇**建立**。

## 步驟 3：建立網路政策
<a name="gsg-network"></a>

[網路政策](serverless-network.md)會決定集合是否可透過網際網路從公用網路存取，或者是否必須透過 OpenSearch Serverless 受管 VPC 端點進行存取。在本教學課程中，我們將設定公用存取權。

**建立網路政策**

1. 在左側導覽窗格中，選擇 **Network policies** (網路政策)，然後選擇 **Create network policy** (建立網路政策)。

1. 將政策命名為 **books-policy**。如需相關描述，請輸入 **Network policy for books collection** (書籍集合的網路政策)。

1. 在 **Rule 1** (規則 1) 下，將規則命名為 **Public access for books collection** (書籍集合的公用存取權)。

1. 為確保本教學課程簡單易懂，我們將為*書籍*集合設定公用存取權。對於存取類型，選取 **Public** (公用)。

1. 我們要從 OpenSearch Dashboards 存取該集合。若要執行這項操作，您需要設定 Dashboards *以及* OpenSearch 端點的網路存取，否則 Dashboards 將無法運作。

   對於資源類型，請同時啟用 **OpenSearch 端點的存取權**和 **OpenSearch Dashboards 的存取權**。

1. 在兩個輸入方塊中，輸入 **Collection Name = books** (集合名稱 = 書籍)。此設定會縮減政策的範圍，使該政策僅套用至單一集合 (`books`)。您的規則應如下所示：  
![\[Search interface showing two input fields for collection or prefix term selection, both set to "books".\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-tutorial-network.png)

1. 選擇**建立**。

## 步驟 4：建立資料存取政策
<a name="gsg-data-access"></a>

在您設定資料存取之前，將無法存取集合資料。[資料存取政策](serverless-data-access.md)與您在步驟 1 中設定的 IAM 身分型政策不同。資料存取政策允許使用者存取集合中的實際資料。

在本教學課程中，我們將為單一使用者提供將資料索引編製為*書籍*集合所需的許可。

**建立資料存取政策**

1. 在左側導覽窗格中，選擇 **Data access policies** (資料存取政策)，然後選擇 **Create access policy** (建立存取政策)。

1. 將政策命名為 **books-policy**。如需相關描述，請輸入 **Data access policy for books collection** (書籍集合的資料存取政策)。

1. 選取 **JSON** 作為政策定義方法，並將下列政策貼到 JSON 編輯器中。

   將主體 ARN 取代為您將用來登入 OpenSearch Dashboards 和為資料編製索引的帳戶 ARN。

   ```
   [
      {
         "Rules":[
            {
               "ResourceType":"index",
               "Resource":[
                  "index/books/*"
               ],
               "Permission":[
                  "aoss:CreateIndex",
                  "aoss:DescribeIndex", 
                  "aoss:ReadDocument",
                  "aoss:WriteDocument",
                  "aoss:UpdateIndex",
                  "aoss:DeleteIndex"
               ]
            }
         ],
         "Principal":[
            "arn:aws:iam::123456789012:user/my-user"
         ]
      }
   ]
   ```

   此政策為單一使用者提供在*書籍*集合中建立索引、為某些資料編製索引以及進行搜尋所需的最低許可。

1. 選擇**建立**。

## 步驟 5：建立集合
<a name="gsgcreate-collection"></a>

現在您已設定加密和網路政策，您可以建立相符的集合，而且安全設定會自動套用至該集合。

**建立 OpenSearch Serverless 集合**

1. 在左側導覽窗格中選擇 **Collections** (集合)，然後選擇 **Create collection** (建立集合)。

1. 將該集合命名為 **books** (書籍)。

1. 對於集合類型，選擇 **Search** (搜尋)。

1. 在 **Encryption** (加密) 下，OpenSearch Serverless 會告知您集合名稱與 `books-policy` 加密政策相符。

1. 在 **Network access settings** (網路存取設定) 下，OpenSearch Serverless 會告知您集合名稱與 `books-policy` 網路政策相符。

1. 選擇**下一步**。

1. 在 **Data access policy options** (資料存取政策選項) 下，OpenSearch Serverless 會通知您集合名稱符合 `books-policy` 資料存取政策。

1. 選擇**下一步**。

1. 檢閱集合組態，然後選擇 **Submit** (提交)。集合初始化所需的時間通常不到一分鐘。

## 步驟 6：上傳並搜尋資料
<a name="gsgindex-collection"></a>

您可以使用 Postman 或 curl，將資料上傳至 OpenSearch Serverless 集合。為了簡潔起見，這些範例使用 OpenSearch Dashboards 主控台中的 **Dev Tools** (開發工具)。

**在集合中為資料編製索引和進行搜尋**

1. 在左側導覽窗格中選擇 **Collections** (集合)，然後選擇 **books** (書籍) 集合以開啟其詳細資訊頁面。

1. 選擇集合的 OpenSearch Dashboards URL。URL 採用的格式為 `https://collection-id.us-east-1.aoss.amazonaws.com/_dashboards`。

1. 使用您在資料存取政策中指定之主體的 [AWS 存取金鑰和私密金鑰](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-appendix-sign-up.html)登入 OpenSearch Dashboards。

1. 在 OpenSearch Dashboards 中，開啟左側導覽選單，然後選擇 **Dev Tools** (開發工具)。

1. 若要建立名為 *books-index* 的單一索引，請執行下列命令：

   ```
   PUT books-index 
   ```  
![\[OpenSearch Dashboards console showing PUT request for books-index with JSON response.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-createindex.png)

1. 若要將單一文件的索引編製為 *books-index*，請執行下列命令：

   ```
   PUT books-index/_doc/1
   { 
     "title": "The Shining",
     "author": "Stephen King",
     "year": 1977
   }
   ```

1. 若要在 OpenSearch Dashboards 中搜尋資料，您需要設定至少一個索引模式。OpenSearch 使用這些模式來識別您要分析的索引。開啟 Dashboards 主選單，選擇 **Stack Management** (堆疊管理)，選擇 **Index Patterns** (索引模式)，然後選擇 **Create index pattern** (建立索引模式)。在本教學課程中，輸入 *books-index*。

1. 選擇 **Next step** (下一步)，然後選擇 **Create index pattern** (建立索引模式)。建立模式之後，您可以檢視各種文件欄位，例如 `author` 和 `title`。

1. 若要開始搜尋資料，請再次開啟主選單，然後選擇 **Discover** (探索)，或使用[搜尋 API](https://opensearch.org/docs/latest/opensearch/rest-api/search/)。

# 教學課程：開始使用 Amazon OpenSearch Serverless (CLI) 中的安全功能
<a name="gsg-serverless-cli"></a>

本教學課程會逐步引導您完成 [主控台入門安全教學](gsg-serverless.md)課程中所述的步驟，但使用 AWS CLI 而非 OpenSearch Service 主控台。

在本教學課程中，您會完成下列步驟：

1. 建立 IAM 許可政策

1. 將 IAM 政策連接至 IAM 角色

1. 建立加密政策

1. 建立網路政策

1. 建立集合

1. 設定資料存取政策

1. 擷取集合端點

1. 將資料上傳至您的連線

1. 搜尋集合中的資料

本教學課程的目標是使用相當簡單的加密、網路和資料存取設定，來設定單一 OpenSearch Serverless 集合。例如，我們將設定公有網路存取、 AWS 受管金鑰 用於加密的 ，以及將最低許可授予單一使用者的簡化資料存取政策。

在生產案例中，請考慮實作更強大的組態，包括 SAML 身分驗證、自訂加密金鑰和 VPC 存取權。

**在 OpenSearch Serverless 中開始使用安全政策**

1. 
**注意**  
如果您已經使用更廣泛的身分型政策，例如 `Action":"aoss:*"` 或 `Action":"*"`，則可以略過此步驟。不過，在生產環境中，我們建議您遵循最低權限原則，並且僅指派任務完成所需的最低許可。

   若要開始，請建立具有執行本教學課程中步驟所需最低許可 AWS Identity and Access Management 的政策。我們會將該政策命名為 `TutorialPolicy`：

   ```
   aws iam create-policy \
     --policy-name TutorialPolicy \
     --policy-document "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Action\": [\"aoss:ListCollections\",\"aoss:BatchGetCollection\",\"aoss:CreateCollection\",\"aoss:CreateSecurityPolicy\",\"aoss:GetSecurityPolicy\",\"aoss:ListSecurityPolicies\",\"aoss:CreateAccessPolicy\",\"aoss:GetAccessPolicy\",\"aoss:ListAccessPolicies\"],\"Effect\": \"Allow\",\"Resource\": \"*\"}]}"
   ```

   **回應範例**

   ```
   {
       "Policy": {
           "PolicyName": "TutorialPolicy",
           "PolicyId": "ANPAW6WRAECKG6QJWUV7U",
           "Arn": "arn:aws:iam::123456789012:policy/TutorialPolicy",
           "Path": "/",
           "DefaultVersionId": "v1",
           "AttachmentCount": 0,
           "PermissionsBoundaryUsageCount": 0,
           "IsAttachable": true,
           "CreateDate": "2022-10-16T20:57:18+00:00",
           "UpdateDate": "2022-10-16T20:57:18+00:00"
       }
   }
   ```

1. 將 `TutorialPolicy` 連接至 IAM 角色，該角色將在集合中為資料編制索引和進行搜尋。我們會將該使用者命名為 `TutorialRole`：

   ```
   aws iam attach-role-policy \
     --role-name TutorialRole \
     --policy-arn arn:aws:iam::123456789012:policy/TutorialPolicy
   ```

1. 建立集合之前，您需要建立[加密政策](serverless-encryption.md)，以將 AWS 擁有的金鑰 指派給您在稍後步驟中建立的*書籍*集合。

   傳送下列請求，以建立*書籍*集合的加密政策：

   ```
   aws opensearchserverless create-security-policy \
     --name books-policy \
     --type encryption --policy "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/books\"]}],\"AWSOwnedKey\":true}"
   ```

   **回應範例**

   ```
   {
       "securityPolicyDetail": {
           "type": "encryption",
           "name": "books-policy",
           "policyVersion": "MTY2OTI0MDAwNTk5MF8x",
           "policy": {
               "Rules": [
                   {
                       "Resource": [
                           "collection/books"
                       ],
                       "ResourceType": "collection"
                   }
               ],
               "AWSOwnedKey": true
           },
           "createdDate": 1669240005990,
           "lastModifiedDate": 1669240005990
       }
   }
   ```

1. 建立[網路政策](serverless-network.md)，該政策會提供*書籍*集合的公用存取權：

   ```
   aws opensearchserverless create-security-policy --name books-policy --type network \
     --policy "[{\"Description\":\"Public access for books collection\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection\/books\"]},{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/books\"]}],\"AllowFromPublic\":true}]"
   ```

   **回應範例**

   ```
   {
       "securityPolicyDetail": {
           "type": "network",
           "name": "books-policy",
           "policyVersion": "MTY2OTI0MDI1Njk1NV8x",
           "policy": [
               {
                   "Rules": [
                       {
                           "Resource": [
                               "collection/books"
                           ],
                           "ResourceType": "dashboard"
                       },
                       {
                           "Resource": [
                               "collection/books"
                           ],
                           "ResourceType": "collection"
                       }
                   ],
                   "AllowFromPublic": true,
                   "Description": "Public access for books collection"
               }
           ],
           "createdDate": 1669240256955,
           "lastModifiedDate": 1669240256955
       }
   }
   ```

1. 建立*書籍*集合：

   ```
   aws opensearchserverless create-collection --name books --type SEARCH
   ```

   **回應範例**

   ```
   {
       "createCollectionDetail": {
           "id": "8kw362bpwg4gx9b2f6e0",
           "name": "books",
           "status": "CREATING",
           "type": "SEARCH",
           "arn": "arn:aws:aoss:us-east-1:123456789012:collection/8kw362bpwg4gx9b2f6e0",
           "kmsKeyArn": "auto",
           "createdDate": 1669240325037,
           "lastModifiedDate": 1669240325037
       }
   }
   ```

1. 建立[資料存取政策](serverless-data-access.md)，該政策會提供在*書籍*集合中為資料編製索引和進行搜尋的最低許可。將主體 ARN 取代為步驟 1 中的 `TutorialRole` ARN：

   ```
   aws opensearchserverless create-access-policy \
     --name books-policy \
     --type data \
     --policy "[{\"Rules\":[{\"ResourceType\":\"index\",\"Resource\":[\"index\/books\/books-index\"],\"Permission\":[\"aoss:CreateIndex\",\"aoss:DescribeIndex\",\"aoss:ReadDocument\",\"aoss:WriteDocument\",\"aoss:UpdateIndex\",\"aoss:DeleteIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:role\/TutorialRole\"]}]"
   ```

   **回應範例**

   ```
   {
       "accessPolicyDetail": {
           "type": "data",
           "name": "books-policy",
           "policyVersion": "MTY2OTI0MDM5NDY1M18x",
           "policy": [
               {
                   "Rules": [
                       {
                           "Resource": [
                               "index/books/books-index"
                           ],
                           "Permission": [
                               "aoss:CreateIndex",
                               "aoss:DescribeIndex",
                               "aoss:ReadDocument",
                               "aoss:WriteDocument",
                               "aoss:UpdateDocument",
                               "aoss:DeleteDocument"
                           ],
                           "ResourceType": "index"
                       }
                   ],
                   "Principal": [
                       "arn:aws:iam::123456789012:role/TutorialRole"
                   ]
               }
           ],
           "createdDate": 1669240394653,
           "lastModifiedDate": 1669240394653
       }
   }
   ```

   `TutorialRole` 現在應該能夠在*書籍*集合中為文件編製索引和進行搜尋。

1. 若要呼叫 OpenSearch API，您需要集合端點。傳送下列請求以擷取 `collectionEndpoint` 參數：

   ```
   aws opensearchserverless batch-get-collection --names books  
   ```

   **回應範例**

   ```
   {
       "collectionDetails": [
           {
               "id": "8kw362bpwg4gx9b2f6e0",
               "name": "books",
               "status": "ACTIVE",
               "type": "SEARCH",
               "description": "",
               "arn": "arn:aws:aoss:us-east-1:123456789012:collection/8kw362bpwg4gx9b2f6e0",
               "createdDate": 1665765327107,
               "collectionEndpoint": "https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com",
               "dashboardEndpoint": "https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com/_dashboards"
           }
       ],
       "collectionErrorDetails": []
   }
   ```
**注意**  
在集合狀態變更為 `ACTIVE` 之前，您都無法看到集合端點。在集合成功建立前，您可能必須進行多次呼叫才能檢查狀態。

1. 使用 [Postman](https://www.getpostman.com/) 或 curl 等 HTTP 工具，將資料索引編製為*書籍*集合。我們將建立名為 *books-index* 的索引，並新增單一文件。

   使用 `TutorialRole` 的憑證，將下列請求傳送至您在上一步擷取的集合端點。

   ```
   PUT https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com/books-index/_doc/1
   { 
     "title": "The Shining",
     "author": "Stephen King",
     "year": 1977
   }
   ```

   **回應範例**

   ```
   {
     "_index" : "books-index",
     "_id" : "1",
     "_version" : 1,
     "result" : "created",
     "_shards" : {
       "total" : 0,
       "successful" : 0,
       "failed" : 0
     },
     "_seq_no" : 0,
     "_primary_term" : 0
   }
   ```

1. 若要開始在集合中搜尋資料，請使用[搜尋 API](https://opensearch.org/docs/latest/opensearch/rest-api/search/)。下列查詢會執行基本搜尋：

   ```
   GET https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com/books-index/_search
   ```

   **回應範例**

   ```
   {
       "took": 405,
       "timed_out": false,
       "_shards": {
           "total": 6,
           "successful": 6,
           "skipped": 0,
           "failed": 0
       },
       "hits": {
           "total": {
               "value": 2,
               "relation": "eq"
           },
           "max_score": 1.0,
           "hits": [
               {
                   "_index": "books-index:0::3xJq14MBUaOS0wL26UU9:0",
                   "_id": "F_bt4oMBLle5pYmm5q4T",
                   "_score": 1.0,
                   "_source": {
                       "title": "The Shining",
                       "author": "Stephen King",
                       "year": 1977
                   }
               }
           ]
       }
   }
   ```

# Amazon OpenSearch Serverless 的身分和存取管理
<a name="security-iam-serverless"></a>

AWS Identity and Access Management (IAM) 是一種 AWS 服務 ，可協助管理員安全地控制對 AWS 資源的存取。IAM 管理員可以控制經過「身分驗證」** (已登入) 和獲得「授權」** (具有許可) 可使用 OpenSearch Serverless 資源的人員。IAM 是您可以免費使用 AWS 服務 的 。

**Topics**
+ [適用於 OpenSearch Serverless 的身分型政策](#security-iam-serverless-id-based-policies)
+ [OpenSearch Serverless 的政策動作](#security-iam-serverless-id-based-policies-actions)
+ [OpenSearch Serverless 的政策資源](#security-iam-serverless-id-based-policies-resources)
+ [Amazon OpenSearch Serverless 的政策條件索引鍵](#security_iam_serverless-conditionkeys)
+ [使用 OpenSearch Serverless 的 ABAC](#security_iam_serverless-with-iam-tags)
+ [將暫時性憑證與 OpenSearch Serverless 搭配使用](#security_iam_serverless-tempcreds)
+ [OpenSearch Serverless 的服務連結角色](#security_iam_serverless-slr)
+ [其他政策類型](#security_iam_access-manage-other-policies)
+ [OpenSearch Serverless 的身分型政策範例](#security_iam_serverless_id-based-policy-examples)
+ [Amazon OpenSearch Serverless 的 IAM Identity Center 支援](serverless-iam-identity-center.md)

## 適用於 OpenSearch Serverless 的身分型政策
<a name="security-iam-serverless-id-based-policies"></a>

**支援身分型政策：**是

身分型政策是可以附加到身分 (例如 IAM 使用者、使用者群組或角色) 的 JSON 許可政策文件。這些政策可控制身分在何種條件下能對哪些資源執行哪些動作。如需了解如何建立身分型政策，請參閱《*IAM 使用者指南*》中的[透過客戶管理政策定義自訂 IAM 許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

使用 IAM 身分型政策，您可以指定允許或拒絕的動作和資源，以及在何種條件下允許或拒絕動作。如要了解您在 JSON 政策中使用的所有元素，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。

### OpenSearch Serverless 的身分型政策範例
<a name="security_iam_id-based-policy-examples"></a>

若要檢視 OpenSearch Serverless 身分型政策範例，請參閱 [OpenSearch Serverless 的身分型政策範例](#security_iam_serverless_id-based-policy-examples)。

## OpenSearch Serverless 的政策動作
<a name="security-iam-serverless-id-based-policies-actions"></a>

**支援政策動作：**是

JSON 政策的 `Action` 元素描述您可以用來允許或拒絕政策中存取的動作。政策動作通常具有與相關聯 AWS API 操作相同的名稱。有一些例外狀況，例如沒有相符的 API 操作的*僅限許可動作*。也有一些作業需要政策中的多個動作。這些額外的動作稱為*相依動作*。

政策會使用動作來授予執行相關聯動作的許可。

OpenSearch Serverless 中的政策動作會在動作之前使用以下字首：

```
aoss
```

若要在單一陳述式中指定多個動作，請用逗號分隔。

```
"Action": [
      "aoss:action1",
      "aoss:action2"
         ]
```

您可以使用萬用字元 (\$1) 來指定多個動作。例如，若要指定開頭是 `Describe` 文字的所有動作，請包含以下動作：

```
"Action": "aoss:List*"
```

若要檢視 OpenSearch Serverless 身分型政策範例，請參閱 [OpenSearch Serverless 的身分型政策範例](#security_iam_id-based-policy-examples)。

## OpenSearch Serverless 的政策資源
<a name="security-iam-serverless-id-based-policies-resources"></a>

**支援政策資源：**是

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Resource` JSON 政策元素可指定要套用動作的物件。最佳實務是使用其 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 來指定資源。若動作不支援資源層級許可，使用萬用字元 (\$1) 表示該陳述式適用於所有資源。

```
"Resource": "*"
```

## Amazon OpenSearch Serverless 的政策條件索引鍵
<a name="security_iam_serverless-conditionkeys"></a>

**支援服務特定政策條件金鑰：**是

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Condition` 元素會根據定義的條件，指定陳述式的執行時機。您可以建立使用[條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)的條件運算式 (例如等於或小於)，來比對政策中的條件和請求中的值。若要查看所有 AWS 全域條件索引鍵，請參閱《*IAM 使用者指南*》中的[AWS 全域條件內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

除了屬性型存取控制 (ABAC)，OpenSearch Serverless 支援以下條件索引鍵：
+ `aoss:collection`
+ `aoss:CollectionId`
+ `aoss:index`

即使提供存取政策和安全政策的許可，您仍然可以使用這些條件索引鍵。例如：

```
[
   {
      "Effect":"Allow",
      "Action":[
         "aoss:CreateAccessPolicy",
         "aoss:CreateSecurityPolicy"
      ],
      "Resource":"*",
      "Condition":{
         "StringLike":{
            "aoss:collection":"log"
         }
      }
   }
]
```

在此範例中，此條件適用於包含*規則*的政策，這些規則與集合名稱或模式相符。這些條件具有以下行為：
+ `StringEquals`：適用的政策具有包含*確切*資源字串 "log" (亦即 `collection/log`) 的規則。
+ `StringLike`：適用的政策所具備規則包含的資源字串*包含*字串 "log" (亦即 `collection/log`，但也是 `collection/logs-application` 或 `collection/applogs123`)。

**注意**  
*集合*條件索引鍵不適用於索引層級。例如，在上述政策中，該條件不會套用至包含資源字串 `index/logs-application/*` 的存取或安全政策。

若要查看 OpenSearch Serverless 條件索引鍵的清單，請參閱《服務授權參考》**中的 [Condition keys for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html#amazonopensearchserverless-policy-keys) (Amazon OpenSearch Serverless 的條件索引鍵)。若要了解您可以將條件索引鍵與哪些動作和資源搭配使用，請參閱 [Actions defined by Amazon OpenSearch Serverless](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html#amazonopensearchserverless-actions-as-permissions) (Amazon OpenSearch Serverless 定義的動作)。

## 使用 OpenSearch Serverless 的 ABAC
<a name="security_iam_serverless-with-iam-tags"></a>

**支援 ABAC (政策中的標籤)：**是

屬性型存取控制 (ABAC) 是一種授權策略，依據稱為標籤的屬性來定義許可。您可以將標籤連接至 IAM 實體 AWS 和資源，然後設計 ABAC 政策，以便在委託人的標籤符合資源上的標籤時允許操作。

如需根據標籤控制存取，請使用 `aws:ResourceTag/key-name`、`aws:RequestTag/key-name` 或 `aws:TagKeys` 條件索引鍵，在政策的[條件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中，提供標籤資訊。

如果服務支援每個資源類型的全部三個條件金鑰，則對該服務而言，值為 **Yes**。如果服務僅支援某些資源類型的全部三個條件金鑰，則值為 **Partial**。

如需 ABAC 的詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 ABAC 授權定義許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。如要查看含有設定 ABAC 步驟的教學課程，請參閱《*IAM 使用者指南*》中的[使用屬性型存取控制 (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)。

如需有關標記 OpenSearch Serverless 資源的詳細資訊，請參閱[標記 Amazon OpenSearch Serverless 集合](tag-collection.md)。

## 將暫時性憑證與 OpenSearch Serverless 搭配使用
<a name="security_iam_serverless-tempcreds"></a>

**支援臨時憑證：**是

臨時登入資料提供對 AWS 資源的短期存取，並在您使用聯合或切換角色時自動建立。 AWS 建議您動態產生臨時登入資料，而不是使用長期存取金鑰。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的臨時安全憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)與[可與 IAM 搭配運作的AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

## OpenSearch Serverless 的服務連結角色
<a name="security_iam_serverless-slr"></a>

**支援服務連結角色：**是

 服務連結角色是連結至 的一種服務角色 AWS 服務。服務可以擔任代表您執行動作的角色。服務連結角色會出現在您的 中 AWS 帳戶 ，並由服務擁有。IAM 管理員可以檢視，但不能編輯服務連結角色的許可。

如需有關建立或管理 OpenSearch Serverless 服務連結角色的詳細資訊，請參閱[使用服務連結角色建立 OpenSearch Serverless 集合](serverless-service-linked-roles.md)。

## 其他政策類型
<a name="security_iam_access-manage-other-policies"></a>

AWS 支援其他較不常見的政策類型。這些政策類型可設定較常見政策類型授予您的最大許可。
+ **服務控制政策 SCPs)** – SCPs是 JSON 政策，可指定 中組織或組織單位 (OU) 的最大許可 AWS Organizations。 AWS Organizations 是一種服務，用於分組和集中管理您企業擁有的多個 AWS 帳戶。若您啟用組織中的所有功能，您可以將服務控制政策 (SCP) 套用到任何或所有帳戶。SCP 會限制成員帳戶中實體的許可，包括每個 AWS 帳戶根使用者。如需 Organizations 和 SCP 的詳細資訊，請參閱 *AWS Organizations 使用者指南*中的[服務控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **資源控制政策 (RCP)** - RCP 是 JSON 政策，可用來設定您帳戶中資源的可用許可上限，採取這種方式就不需要更新附加至您所擁有的每個資源的 IAM 政策。RCP 會限制成員帳戶中資源的許可，並可能影響身分的有效許可，包括 AWS 帳戶根使用者，無論它們是否屬於您的組織。如需 Organizations 和 RCPs的詳細資訊，包括支援 RCPs AWS 的服務清單，請參閱*AWS Organizations 《 使用者指南*》中的[資源控制政策 (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。

## OpenSearch Serverless 的身分型政策範例
<a name="security_iam_serverless_id-based-policy-examples"></a>

依預設，使用者和角色不具備建立或修改 OpenSearch Serverless 資源的許可。若要授予使用者對其所需資源執行動作的許可，IAM 管理員可以建立 IAM 政策。

如需了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策，請參閱《*IAM 使用者指南*》中的[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

如需有關 Amazon OpenSearch Serverless 所定義之動作和資源類型的詳細資訊，包括每種資源類型的 ARN 格式，請參閱《服務授權參考》**中的 [Actions, resources, and condition keys for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html) (適用於 Amazon OpenSearch Serverless 的動作、資源和條件索引鍵)。

**Topics**
+ [政策最佳實務](#security_iam_serverless-policy-best-practices)
+ [在主控台中使用 OpenSearch Serverless](#security_iam_serverless_id-based-policy-examples-console)
+ [管理 OpenSearch Serverless 集合](#security_iam_id-based-policy-examples-collection-admin)
+ [檢視 OpenSearch Serverless 集合](#security_iam_id-based-policy-examples-view-collections)
+ [使用 OpenSearch API 操作](#security_iam_id-based-policy-examples-data-plane)
+ [適用於 OpenSearch API 操作的 ABAC](#security_iam_id-based-policy-examples-data-plane-abac)

### 政策最佳實務
<a name="security_iam_serverless-policy-best-practices"></a>

身分型政策相當強大。他們可以判斷某個人員是否可以在您的帳戶中建立、存取或刪除 OpenSearch Serverless 資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時，請遵循下列準則及建議事項：

身分型政策會判斷您帳戶中的某個人員是否可以建立、存取或刪除 OpenSearch Serverless 資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時，請遵循下列準則及建議事項：
+ **開始使用 AWS 受管政策並邁向最低權限許可** – 若要開始將許可授予您的使用者和工作負載，請使用將許可授予許多常見使用案例的 *AWS 受管政策*。它們可在您的 中使用 AWS 帳戶。我們建議您定義特定於使用案例 AWS 的客戶受管政策，以進一步減少許可。如需更多資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[任務職能的AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **套用最低權限許可** – 設定 IAM 政策的許可時，請僅授予執行任務所需的許可。為實現此目的，您可以定義在特定條件下可以對特定資源採取的動作，這也稱為*最低權限許可*。如需使用 IAM 套用許可的更多相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 政策中的條件進一步限制存取權** – 您可以將條件新增至政策，以限制動作和資源的存取。例如，您可以撰寫政策條件，指定必須使用 SSL 傳送所有請求。如果透過特定 例如 使用服務動作 AWS 服務，您也可以使用條件來授予其存取權 CloudFormation。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 驗證 IAM 政策，確保許可安全且可正常運作** – IAM Access Analyzer 驗證新政策和現有政策，確保這些政策遵從 IAM 政策語言 (JSON) 和 IAM 最佳實務。IAM Access Analyzer 提供 100 多項政策檢查及切實可行的建議，可協助您撰寫安全且實用的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 IAM Access Analyzer 驗證政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重要素驗證 (MFA)** – 如果您的案例需要 IAM 使用者或 中的根使用者 AWS 帳戶，請開啟 MFA 以提高安全性。如需在呼叫 API 操作時請求 MFA，請將 MFA 條件新增至您的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[透過 MFA 的安全 API 存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

如需 IAM 中最佳實務的相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

### 在主控台中使用 OpenSearch Serverless
<a name="security_iam_serverless_id-based-policy-examples-console"></a>

若要在 OpenSearch Service 主控台中存取 OpenSearch Serverless，您必須擁有一組最低許可。這些許可必須允許您列出和檢視 AWS 帳戶中 OpenSearch Serverless 資源的詳細資訊。如果您建立比最基本必要許可更嚴格的身分型政策，則對於具有該政策的實體 (例如 IAM 角色等) 而言，主控台就無法如預期運作。

對於僅呼叫 AWS CLI 或 AWS API 的使用者，您不需要允許最低主控台許可。反之，只需允許存取符合您嘗試執行之 API 作業的動作就可以了。

下列政策讓使用者可以在 OpenSearch Service 主控台中存取 OpenSearch Serverless：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Resource": "*",
            "Effect": "Allow",
            "Action": [
                "aoss:ListCollections",
                "aoss:BatchGetCollection",
                "aoss:ListAccessPolicies",
                "aoss:ListSecurityConfigs",
                "aoss:ListSecurityPolicies",
                "aoss:ListTagsForResource",
                "aoss:ListVpcEndpoints",
                "aoss:GetAccessPolicy",
                "aoss:GetAccountSettings",
                "aoss:GetSecurityConfig",
                "aoss:GetSecurityPolicy"
            ]
        }
    ]
}
```

------

### 管理 OpenSearch Serverless 集合
<a name="security_iam_id-based-policy-examples-collection-admin"></a>

此政策是「集合管理員」政策的範例，讓使用者可以管理 Amazon OpenSearch Serverless 集合。使用者可以建立、檢視和刪除集合。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/*",
            "Action": [
                "aoss:CreateCollection",
                "aoss:DeleteCollection",
                "aoss:UpdateCollection"
            ],
            "Effect": "Allow"
        },
        {
            "Resource": "*",
            "Action": [
                "aoss:BatchGetCollection",
                "aoss:ListCollections",
                "aoss:CreateAccessPolicy",
                "aoss:CreateSecurityPolicy"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

### 檢視 OpenSearch Serverless 集合
<a name="security_iam_id-based-policy-examples-view-collections"></a>

此範例政策讓使用者可以檢視其帳戶中所有 Amazon OpenSearch Serverless 集合的詳細資訊。使用者無法修改集合或任何關聯的安全政策。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Resource": "*",
            "Action": [
                "aoss:ListAccessPolicies",
                "aoss:ListCollections",
                "aoss:ListSecurityPolicies",
                "aoss:ListTagsForResource",
                "aoss:BatchGetCollection"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

### 使用 OpenSearch API 操作
<a name="security_iam_id-based-policy-examples-data-plane"></a>

資料平面 API 操作包含您在 OpenSearch Serverless 中使用的函數，以從服務衍生即時值。控制平面 API 操作包含您用來設定環境的函數。

若要從瀏覽器存取 Amazon OpenSearch Serverless 資料平面 APIs 和 OpenSearch Dashboards，您需要為集合資源新增兩個 IAM 許可。這些許可為 `aoss:APIAccessAll`和 `aoss:DashboardsAccessAll`。

**注意**  
從 2023 年 5 月 10 日開始，OpenSearch Serverless 需要這兩個新的集合資源 IAM 許可。`aoss:APIAccessAll` 許可允許資料平面存取，而 `aoss:DashboardsAccessAll`許可允許來自瀏覽器的 OpenSearch Dashboards。未新增兩個新的 IAM 許可會導致 403 錯誤。

此範例政策允許使用者存取其帳戶中指定集合的資料平面 APIs，以及存取其帳戶中所有集合的 OpenSearch Dashboards。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
         {
            "Effect": "Allow",
            "Action": "aoss:APIAccessAll",
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id"
        },
        {
            "Effect": "Allow",
            "Action": "aoss:DashboardsAccessAll",
            "Resource": "arn:aws:aoss:us-east-1:111122223333:dashboards/default"
        }
    ]
}
```

------

`aoss:APIAccessAll` 和 都會`aoss:DashboardsAccessAll`提供集合資源的完整 IAM 許可，而 Dashboards 許可也會提供 OpenSearch Dashboards 存取權。每個許可都獨立運作，因此 上的明確拒絕`aoss:APIAccessAll`不會封鎖對 資源的`aoss:DashboardsAccessAll`存取，包括開發工具。在 上拒絕也是如此`aoss:DashboardsAccessAll`。OpenSearch Serverless 支援下列全域條件金鑰：
+ `aws:CalledVia`
+ `aws:CalledViaAWSService`
+ `aws:CalledViaFirst`
+ `aws:CalledViaLast`
+ `aws:CurrentTime`
+ `aws:EpochTime`
+ `aws:PrincipalAccount`
+ `aws:PrincipalArn`
+ `aws:PrincipallsAWSService`
+ `aws:PrincipalOrgID`
+ `aws:PrincipalOrgPaths`
+ `aws:PrincipalType`
+ `aws:PrincipalServiceName`
+ `aws:PrincipalServiceNamesList`
+ `aws:ResourceAccount`
+ `aws:ResourceOrgID`
+ `aws:ResourceOrgPaths`
+ `aws:RequestedRegion`
+ `aws:ResourceTag`
+ `aws:SourceIp`
+ `aws:SourceVpce`
+ `aws:SourceVpc`
+ `aws:userid`
+ `aws:username`
+ `aws:VpcSourceIp`

以下是在委託人 IAM 政策`aws:SourceIp`的條件區塊中使用 進行資料平面呼叫的範例：

```
"Condition": {
    "IpAddress": {
         "aws:SourceIp": "203.0.113.0"
    }
}
```

以下是在委託人 IAM 政策`aws:SourceVpc`的條件區塊中使用 進行資料平面呼叫的範例：

```
"Condition": {
    "StringEquals": {
        "aws:SourceVpc": "vpc-0fdd2445d8EXAMPLE"
    }
}
```

此外，支援下列 OpenSearch Serverless 特定金鑰：
+ `aoss:CollectionId`
+ `aoss:collection`

以下是在委託人 IAM 政策`aoss:collection`的條件區塊中使用 進行資料平面呼叫的範例：

```
"Condition": {
    "StringLike": {
         "aoss:collection": "log-*"
    }
}
```

### 適用於 OpenSearch API 操作的 ABAC
<a name="security_iam_id-based-policy-examples-data-plane-abac"></a>

身分型政策可讓您使用標籤來控制對 Amazon OpenSearch Serverless 資料平面 APIs存取。下列政策是允許附加主體存取資料平面 APIs 的範例，如果集合具有 `team:devops`標籤：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "aoss:APIAccessAll",
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/team": "devops"
                }
            }
        }
    ]
}
```

------

如果集合具有 `environment:production`標籤，以下政策是拒絕連接主體存取資料平面 APIs 和儀表板存取的範例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "aoss:APIAccessAll",
                "aoss:DashboardsAccessAll"
            ],
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id"
        }
    ]
}
```

------

Amazon OpenSearch Serverless 不支援資料平面 APIs 的 `RequestTag`和 `TagKeys`全域條件金鑰。

# Amazon OpenSearch Serverless 的 IAM Identity Center 支援
<a name="serverless-iam-identity-center"></a>

## Amazon OpenSearch Serverless 的 IAM Identity Center 支援
<a name="serverless-iam-identity-support"></a>

您可以使用 IAM Identity Center 主體 （使用者和群組） 透過 Amazon OpenSearch 應用程式存取 Amazon OpenSearch Serverless 資料。若要啟用 Amazon OpenSearch Serverless 的 IAM Identity Center 支援，您需要啟用 IAM Identity Center 的使用。若要進一步了解如何執行此操作，請參閱[什麼是 IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)

**注意**  
若要使用 IAM Identity Center 使用者或群組存取 Amazon OpenSearch Serverless 集合，您必須使用 OpenSearch UI （應用程式） 功能。不支援使用 IAM Identity Center 登入資料直接存取 OpenSearch Serverless Dashboards。如需詳細資訊，請參閱 [ OpenSearch 使用者介面入門](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/application.html)。

建立 IAM Identity Center 執行個體之後，客戶帳戶管理員需要為 Amazon OpenSearch Serverless 服務建立 IAM Identity Center 應用程式。這可以透過呼叫 [CreateSecurityConfig 來完成](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityConfig.html)。客戶帳戶管理員可以指定要用於授權請求的屬性。使用的預設屬性為 `UserId`和 `GroupId.`

Amazon OpenSearch Serverless 的 IAM Identity Center 整合使用以下 AWS IAM Identity Center (IAM) 許可：
+ `aoss:CreateSecurityConfig` – 建立 IAM Identity Center 供應商
+ `aoss:ListSecurityConfig` – 列出目前帳戶中的所有 IAM Identity Center 供應商。
+ `aoss:GetSecurityConfig` – 檢視 IAM Identity Center 提供者資訊。
+ `aoss:UpdateSecurityConfig` – 修改指定的 IAM Identity Center 組態
+ `aoss:DeleteSecurityConfig` – 刪除 IAM Identity Centerprovider。

下列身分型存取政策可用於管理所有 IAM Identity Center 組態：

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

****  

```
{
"Version": "2012-10-17",
    "Statement": [
        {
"Action": [
                "aoss:CreateSecurityConfig",
                "aoss:DeleteSecurityConfig",
                "aoss:GetSecurityConfig",
                "aoss:UpdateSecurityConfig",
                "aoss:ListSecurityConfigs"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

**注意**  
`Resource` 元素必須是萬用字元。

## 建立 IAM Identity Center 提供者 （主控台）
<a name="serverless-iam-console"></a>

您可以建立 IAM Identity Center 提供者，以使用 OpenSearch 應用程式啟用身分驗證。若要啟用 OpenSearch Dashboards 的 IAM Identity Center 身分驗證，請執行下列步驟：

1. 登入 [Amazon OpenSearch Service](https://console.aws.amazon.com/aos/home.) 主控台。

1. 在左側導覽面板上，展開**無伺服器**並選擇**身分驗證**。

1. 選擇** IAM Identity Center 身分驗證**。

1. 選取**編輯**

1. 勾選使用 IAM Identity Center 驗證旁的方塊。

1. 從下拉式選單中選取**使用者和群組**屬性索引鍵。使用者屬性將用於根據 `UserName`、 `UserId`和 授權使用者`Email`。群組屬性將用於根據 `GroupName`和 對使用者進行身分驗證`GroupId`。

1. 選取 **IAM Identity Center** 執行個體。

1. 選取**儲存**

## 建立 IAM Identity Center 提供者 (AWS CLI)
<a name="serverless-iam-identity-center-cli"></a>

若要使用 AWS Command Line Interface (AWS CLI) 建立 IAM Identity Center 提供者，請使用下列命令：

```
aws opensearchserverless create-security-config \
--region us-east-2 \
--name "iamidentitycenter-config" \
--description "description" \
--type "iamidentitycenter" \
--iam-identity-center-options '{
    "instanceArn": "arn:aws:sso:::instance/ssoins-99199c99e99ee999",
    "userAttribute": "UserName",                  
    "groupAttribute": "GroupId"
}'
```

啟用 IAM Identity Center 之後，客戶只能修改**使用者和群組**屬性。

```
aws opensearchserverless update-security-config \
--region us-east-1 \
--id <id_from_list_security_configs> \
--config-version <config_version_from_get_security_config> \
--iam-identity-center-options-updates '{
    "userAttribute": "UserId",
    "groupAttribute": "GroupId"
}'
```

若要使用 檢視 IAM Identity Center 供應商 AWS Command Line Interface，請使用下列命令：

```
aws opensearchserverless list-security-configs --type iamidentitycenter
```

## 刪除 IAM Identity Center 供應商
<a name="serverless-iam-identity-center-deleting"></a>

 IAM Identity Center 提供兩個提供者執行個體，一個用於您的組織帳戶，另一個用於您的成員帳戶。如果您需要變更 IAM Identity Center 執行個體，則需要透過 `DeleteSecurityConfig` API 刪除安全組態，並使用新的 IAM Identity Center 執行個體建立新的安全組態。下列命令可用來刪除 IAM Identity Center 提供者：

```
aws opensearchserverless delete-security-config \
--region us-east-1 \
--id <id_from_list_security_configs>
```

## 授予 IAM Identity Center 對集合資料的存取權
<a name="serverless-iam-identity-center-collection-data"></a>

啟用 IAM Identity Center 提供者後，您可以更新集合資料存取政策，以包含 IAM Identity Center 主體。IAM Identity Center 主體需要以下列格式更新：

```
[
   {
"Rules":[
       ...  
      ],
      "Principal":[
         "iamidentitycenter/<iamidentitycenter-instance-id>/user/<UserName>",
         "iamidentitycenter/<iamidentitycenter-instance-id>/group/<GroupId>"
      ]
   }
]
```

**注意**  
Amazon OpenSearch Serverless 為所有客戶集合僅支援一個 IAM Identity Center 執行個體，且單一使用者最多可支援 100 個群組。如果您嘗試使用超過允許的執行個體數量，您會遇到與資料存取政策授權處理不一致的情況，並收到`403`錯誤訊息。

您可以授予對集合、索引或兩者的存取權。如果您希望不同的使用者具有不同的權限，則需要建立多個規則。如需可用許可的清單，請參閱 [Amazon OpenSearch Service 中的 Identity and Access Management](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ac.html)。如需如何格式化存取政策的資訊，請參閱[授予 SAML 身分對集合資料的存取權。 ](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html#serverless-saml-policies)

# Amazon OpenSearch Serverless 中的加密
<a name="serverless-encryption"></a>

## 靜態加密
<a name="serverless-encryption-at-rest"></a>

您建立的每個 Amazon OpenSearch Serverless 集合的保護都是使用靜態資料加密來實現，靜態資料加密是一種安全功能，可協助防止您的資料遭到未經授權存取。靜態加密使用 AWS Key Management Service (AWS KMS) 來存放和管理加密金鑰。其會使用 256 位元金鑰的進階加密標準演算法 (AES-256) 來執行加密。

**Topics**
+ [加密政策](#serverless-encryption-policies)
+ [考量事項](#serverless-encryption-considerations)
+ [必要許可](#serverless-encryption-permissions)
+ [客戶自管金鑰的金鑰政策](#serverless-customer-cmk-policy)
+ [OpenSearch Serverless 如何在 中使用授予 AWS KMS](#serverless-encryption-grants)
+ [建立加密政策 (主控台)](#serverless-encryption-console)
+ [建立加密政策 (AWS CLI)](#serverless-encryption-cli)
+ [檢視加密政策](#serverless-encryption-list)
+ [更新加密政策](#serverless-encryption-update)
+ [刪除加密政策](#serverless-encryption-delete)

### 加密政策
<a name="serverless-encryption-policies"></a>

您可以使用加密政策，透過自動將加密金鑰指派給符合特定名稱或模式的新建集合，大規模管理許多集合。

建立加密政策時，您可以指定*字首*，這是以萬用字元為基礎的比對規則 (例如 `MyCollection*`)，或輸入單一集合名稱。然後，當您建立符合該名稱或字首模式的集合時，系統會將該政策和對應的 KMS 金鑰自動指派給該集合。

建立集合時，您可以透過兩種方式指定 AWS KMS 金鑰：透過安全政策或直接在`CreateCollection`請求中。如果您在`CreateCollection`請求中提供 AWS KMS 金鑰，則優先於任何相符的安全政策。透過此方法，您可以在需要時靈活地覆寫特定集合的政策型加密設定。

![\[Encryption policy creation process with rules and collection matching to KMS key.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-encryption.png)


加密政策包含下列元素：
+ `Rules`：一個或多個集合比對規則，每個規則都包含下列子元素：
  + `ResourceType`：目前唯一的選項是「集合」。加密政策僅套用至集合資源。
  + `Resource`：政策套用至的一個或多個集合名稱或模式 (格式為 `collection/<collection name|pattern>`)。
+ `AWSOwnedKey`：是否要使用 AWS 擁有的金鑰。
+ `KmsARN`：如果您將 `AWSOwnedKey` 設定為 false，請指定用於加密關聯集合之 KMS 金鑰的 Amazon Resource Name (ARN)。如果您包含此參數，OpenSearch Serverless 會忽略 `AWSOwnedKey` 參數。

下列範例政策會將客戶受管金鑰指派給任何名為 `autopartsinventory` 的未來集合，以及以「銷售」一詞開頭的集合：

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":false,
   "KmsARN":"arn:aws:kms:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36"
}
```

即使政策符合集合名稱，如果資源模式包含萬用字元 (\$1)，您也可以選擇在集合建立期間覆寫此自動指派。如果您選擇覆寫自動金鑰指派，OpenSearch Serverless 會為您建立名為 **auto-<*collection-name*>** 的加密政策，並將其連接到集合。該政策最初只適用於單一集合，但您可以加以修改以包含其他集合。

如果您將政策規則修改為不再符合某個集合，則系統不會將關聯的 KMS 金鑰從該集合取消指派。集合一律會使用其初始加密金鑰保持加密的狀態。如果您想要變更集合的加密金鑰，您必須重新建立集合。

如果來自多個政策的規則符合集合，則會使用更明確的規則。例如，如果某個政策包含的規則適用於 `collection/log*`，而另一個適用於 `collection/logSpecial`，則會使用第二個政策的加密金鑰，因為該金鑰更加明確。

如果某個政策中已有名稱或字首，則無法在另一個政策中使用該名稱或字首。如果您嘗試在不同的加密政策中設定相同的資源模式，則 OpenSearch Serverless 會顯示錯誤。

### 考量事項
<a name="serverless-encryption-considerations"></a>

設定集合的加密時應考慮以下事項：
+ 所有無伺服器集合都*需要*靜態加密。
+ 您可以選擇使用客戶受管金鑰或 AWS 擁有的金鑰。如果您選擇客戶受管金鑰，建議您啟用[自動金鑰輪換](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)。
+ 建立集合之後，便無法變更集合的加密金鑰。第一次設定集合時，請仔細選擇要使用的 AWS KMS 集合。
+ 集合只能符合單一加密政策。
+ 具有唯一 KMS 金鑰的集合無法與其他集合共用 OpenSearch 運算單元 (OCU)。每個具有唯一金鑰的集合都需要專屬的 4 個 OCU。
+ 如果您更新加密政策中的 KMS 金鑰，則變更不會影響已指派 KMS 金鑰的現有相符集合。
+ OpenSearch Serverless 不會明確檢查客戶受管金鑰的使用者許可。如果使用者有權透過資料存取政策存取集合，他們就能夠擷取和查詢透過關聯金鑰加密的資料。

### 必要許可
<a name="serverless-encryption-permissions"></a>

OpenSearch Serverless 的靜態加密會使用下列 AWS Identity and Access Management (IAM) 許可。您可以指定 IAM 條件，將使用者限制在特定集合內。
+ `aoss:CreateSecurityPolicy`：建立加密政策。
+ `aoss:ListSecurityPolicies`：列出連接的所有加密政策和集合。
+ `aoss:GetSecurityPolicy`：查看特定加密政策的詳細資訊。
+ `aoss:UpdateSecurityPolicy`：修改加密政策。
+ `aoss:DeleteSecurityPolicy`：刪除加密政策。

下列身分型存取政策範例提供使用者透過資源模式 `collection/application-logs` 管理加密政策所需的最低許可。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "aoss:CreateSecurityPolicy",
            "aoss:UpdateSecurityPolicy",
            "aoss:DeleteSecurityPolicy",
            "aoss:GetSecurityPolicy"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "aoss:collection":"application-logs"
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "aoss:ListSecurityPolicies"
         ],
         "Resource":"*"
      }
   ]
}
```

------

### 客戶自管金鑰的金鑰政策
<a name="serverless-customer-cmk-policy"></a>

當您選取[客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)來保護集合時，OpenSearch Serverless 會取得許可，以代表進行選取的主體使用 KMS 金鑰。該主體 (使用者或角色) 必須具備 OpenSearch Serverless 所需的 KMS 金鑰許可。您可以在[金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)或 [IAM 政策](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html)中提供這些許可。

OpenSearch Serverless 會在維護操作期間進行 `GenerateDataKey` 和 `Decrypt` KMS API 呼叫，例如自動擴展和軟體更新。您可能會在一般流量模式之外看到這些呼叫。這些呼叫是正常服務操作的一部分，不表示作用中的使用者流量。

當 OpenSearch Serverless 無法存取加密靜態資料的 KMS 金鑰`KMSKeyInaccessibleException`時，會擲回 。當您停用或刪除 KMS 金鑰，或撤銷允許 OpenSearch Serverless 使用金鑰的授予時，就會發生這種情況。

至少，OpenSearch Serverless 需要具備客戶受管金鑰的下列許可：
+ [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [kms:CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)

例如：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Action": "kms:DescribeKey",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Dale"
        },
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "kms:ViaService": "aoss.us-east-1.amazonaws.com"
            }
        }
    },
    {
        "Action": "kms:CreateGrant",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Dale"
        },
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "kms:ViaService": "aoss.us-east-1.amazonaws.com"
            },
            "ForAllValues:StringEquals": {
                "kms:GrantOperations": [
                    "Decrypt",
                    "GenerateDataKey"
                ]
            },
            "Bool": {
                "kms:GrantIsForAWSResource": "true"
            }
        }
    }
  ]
}
```

------

OpenSearch Serverless 會使用 [kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 和 [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 許可建立授予。

如需詳細資訊，請參閱 *AWS Key Management Service 開發人員指南*中的 [在 AWS KMS中使用金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

### OpenSearch Serverless 如何在 中使用授予 AWS KMS
<a name="serverless-encryption-grants"></a>

OpenSearch Serverless 需要[授予](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)才能使用客戶受管金鑰。

當您使用新金鑰在帳戶中建立加密政策時，OpenSearch Serverless 會透過傳送 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 請求至 來代表您建立授予 AWS KMS。中的授予 AWS KMS 用於授予 OpenSearch Serverless 存取客戶帳戶中 KMS 金鑰的權限。

OpenSearch Serverless 需要授予，才能在下列內部操作中使用客戶受管金鑰：
+ 將 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 請求傳送至 AWS KMS ，以驗證提供的對稱客戶受管金鑰 ID 是否有效。
+ 將 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 請求傳送至 KMS 金鑰，以建立加密物件所用的資料金鑰。
+ 將 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 請求傳送至 AWS KMS 以解密加密的資料金鑰，以便用來加密您的資料。

您可以隨時撤銷授予的存取權，或移除服務對客戶受管金鑰的存取權。如果您這麼做，OpenSearch Serverless 將無法存取由客戶受管金鑰加密的任何資料，這會影響與該資料有關的所有操作，進而導致非同步工作流程中的 `AccessDeniedException` 錯誤和失敗。

當指定的客戶受管金鑰未與任何安全政策或集合相關聯時，OpenSearch Serverless 會淘汰非同步工作流程中的授予。

### 建立加密政策 (主控台)
<a name="serverless-encryption-console"></a>

在加密政策中，您可以指定政策套用至的 KMS 金鑰和一系列集合模式。當您建立集合時，系統會將對應的 KMS 金鑰指派給符合政策中定義模式之一的任何新集合。建議您先建立加密政策，*然後*再開始建立集合。

**建立 OpenSearch Serverless 加密政策**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽面板中，展開 **Serverless** (無伺服器)，然後選擇 **Encryption policies** (加密政策)。

1. 選擇 **Create encryption policy** (建立加密政策)。

1. 提供政策的名稱和描述。

1. 在 **Resources** (資源) 下，輸入此加密政策的一個或多個資源模式。目前 AWS 帳戶 和區域中符合其中一種模式的任何新建集合都會自動指派給此政策。例如，如果您輸入 `ApplicationLogs` (不含萬用字元)，然後再使用該名稱建立集合，則會將該政策和對應的 KMS 金鑰指派給該集合。

   您也可以提供字首，例如 `Logs*`，此字首會將政策指派給名稱以 `Logs` 開頭的任何新集合。透過使用萬用字元，您可以大規模管理多個集合的加密設定。

1. 在 **Encryption** (加密) 下，選擇要使用的 KMS 金鑰。

1. 選擇**建立**。

#### 下一步：建立集合
<a name="serverless-encryption-next"></a>

設定一個或多個加密政策後，您就可以開始建立與這些政策中定義之規則相符的集合。如需說明，請參閱[建立集合](serverless-create.md)。

在集合建立的 **Encryptions** (加密) 步驟中，OpenSearch Serverless 會通知您所輸入的名稱與加密政策中定義的模式相符，並自動將對應的 KMS 金鑰指派給該集合。如果資源模式包含萬用字元 (\$1)，您可以選擇覆寫相符項目並選取自己的金鑰。

### 建立加密政策 (AWS CLI)
<a name="serverless-encryption-cli"></a>

若要使用 OpenSearch Serverless API 操作建立加密政策，您需指定資源模式和 JSON 格式的加密金鑰。[CreateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityPolicy.html) 請求同時接受內嵌政策和 .json 檔案。

加密政策採用下列格式。此範例 `my-policy.json` 檔案符合任何名為 `autopartsinventory` 的未來集合，以及名稱以 `sales` 開頭的任何集合。

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":false,
   "KmsARN":"arn:aws:kms:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36"
}
```

若要使用服務擁有的金鑰，請將 `AWSOwnedKey` 設定為 `true`：

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":true
}
```

下列請求會建立加密政策：

```
aws opensearchserverless create-security-policy \
    --name sales-inventory \
    --type encryption \
    --policy file://my-policy.json
```

然後，使用 [CreateCollection](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateCollection.html) API 操作建立一個或多個符合其中一個資源模式的集合。

### 檢視加密政策
<a name="serverless-encryption-list"></a>

在建立集合之前，您可能想要預覽帳戶中現有的加密政策，以查看哪個政策的資源模式與集合名稱相符。下列 [ListSecurityPolicies](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListSecurityPolicies.html) 請求會列出您帳戶中的所有加密政策：

```
aws opensearchserverless list-security-policies --type encryption
```

該請求會傳回所有已設定加密政策的相關資訊。使用 `policy` 元素的內容以檢視政策中定義的模式規則：

```
{
   "securityPolicyDetails": [ 
      { 
         "createdDate": 1663693217826,
         "description": "Sample encryption policy",
         "lastModifiedDate": 1663693217826,
         "name": "my-policy",
         "policy": "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"]}],\"AWSOwnedKey\":true}",
         "policyVersion": "MTY2MzY5MzIxNzgyNl8x",
         "type": "encryption"
      }
   ]
}
```

若要檢視有關特定政策 (包括 KMS 金鑰) 的詳細資訊，請使用 [GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html) 命令。

### 更新加密政策
<a name="serverless-encryption-update"></a>

如果您更新加密政策中的 KMS 金鑰，則變更只會套用至與設定的名稱或模式相符的新建集合。這不會影響已指派 KMS 金鑰的現有集合。

這也適用於政策比對規則。如果您新增、修改或刪除規則，則變更僅適用於新建集合。如果您修改政策的規則，使其不再符合集合的名稱，則現有集合不會遺失其指派的 KMS 金鑰。

若要更新 OpenSearch Serverless 主控台中的加密政策，請選擇 **Encryption policies** (加密政策)，選取要修改的政策，然後選擇 **Edit** (編輯)。進行變更，然後選擇 **Save** (儲存)。

若要使用 OpenSearch Serverless API 更新加密政策，請使用 [UpdateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityPolicy.html) 操作。下列請求會使用新的政策 JSON 文件更新加密政策：

```
aws opensearchserverless update-security-policy \
    --name sales-inventory \
    --type encryption \
    --policy-version 2 \
    --policy file://my-new-policy.json
```

### 刪除加密政策
<a name="serverless-encryption-delete"></a>

當您刪除加密政策時，目前使用政策中定義之 KMS 金鑰的任何集合都不會受到影響。若要刪除 OpenSearch Serverless 主控台中的政策，請選取該政策，然後選擇 **Delete** (刪除)。

您也可以使用 [DeleteSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteSecurityPolicy.html) 操作：

```
aws opensearchserverless delete-security-policy --name my-policy --type encryption
```

## 傳輸中加密
<a name="serverless-encryption-in-transit"></a>

在 OpenSearch Serverless 中，集合中的所有路徑都會使用 Transport Layer Security 1.2 (TLS) 搭配業界標準 AES-256 密碼在傳輸中加密。也可透過 TLS 1.2 存取 Opensearch 的所有 APIs 和儀表板。TLS 是一組業界標準的密碼編譯通訊協定，用於加密透過網路交換的資訊。

# Amazon OpenSearch Serverless 的網路存取
<a name="serverless-network"></a>

Amazon OpenSearch Serverless 集合的網路設定會判斷該集合是否可透過網際網路從公有網路存取，或是否必須私下存取。

私有存取可以套用到下列其中一項或兩項：
+ OpenSearch Serverless 受管 VPC 端點
+ 支援， AWS 服務 例如 Amazon Bedrock

您可以針對集合的 *OpenSearch* 端點及其對應的 *OpenSearch Dashboards* 端點個別設定網路存取。

網路存取是允許從不同來源網路存取的隔離機制。例如，如果集合的 OpenSearch Dashboards 端點可公開存取，但 OpenSearch API 端點無法公開存取，則使用者只能在從公有網路連線時透過 Dashboards 存取集合資料。如果使用者嘗試直接從公用網路呼叫 OpenSearch API，就會遭到封鎖。網路設定可用於來源到資源類型的這類排列。Amazon OpenSearch Serverless 同時支援 IPv4 和 IPv6 連線。

**Topics**
+ [網路政策](#serverless-network-policies)
+ [考量事項](#serverless-network-considerations)
+ [設定網路政策所需的許可](#serverless-network-permissions)
+ [政策優先順序](#serverless-network-precedence)
+ [建立網路政策 (主控台)](#serverless-network-console)
+ [建立網路政策 (AWS CLI)](#serverless-network-cli)
+ [檢視網路政策](#serverless-network-list)
+ [更新網路政策](#serverless-network-update)
+ [刪除網路政策](#serverless-network-delete)

## 網路政策
<a name="serverless-network-policies"></a>

網路政策讓您可以自動將網路存取設定指派給符合政策中定義之規則的集合，以便大規模管理許多集合。

在網路政策中，您可以指定一系列*規則*。這些規則會定義集合端點和 OpenSearch Dashboards 端點的存取許可。每個規則都包含存取類型 （公有或私有） 和資源類型 （集合和/或 OpenSearch Dashboards 端點）。對於每個資源類型 (`collection` 和 `dashboard`)，您可以指定一系列規則來定義政策套用至的集合。

在此範例政策中，第一個規則會指定 VPC 端點對以 一詞開頭之所有集合的集合端點和 Dashboards 端點的存取`marketing*`。它也會指定 Amazon Bedrock 存取。

**注意**  
對 Amazon Bedrock AWS 服務 等 的私有存取*僅適用於*集合的 OpenSearch 端點，不適用於 OpenSearch Dashboards 端點。即使 `ResourceType`是 `dashboard`，也 AWS 服務 無法授予 OpenSearch Dashboards 的存取權。

第二個規則會指定對 `finance` 集合的公用存取權，但僅限於集合端點 (無 Dashboards 存取權)。

```
[
   {
      "Description":"Marketing access",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/marketing*"
            ]
         },
         {
            "ResourceType":"dashboard",
            "Resource":[
               "collection/marketing*"
            ]
         }
      ],
      "AllowFromPublic":false,
      "SourceVPCEs":[
         "vpce-050f79086ee71ac05"
      ],
      "SourceServices":[
         "bedrock.amazonaws.com"
      ],
   },
   {
      "Description":"Sales access",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":true
   }
]
```

此政策僅針對以「財務」開頭的集合，提供對 OpenSearch Dashboards 的公用存取權。任何直接存取 OpenSearch API 的嘗試都會失敗。

```
[
  {
    "Description": "Dashboards access",
    "Rules": [
      {
        "ResourceType": "dashboard",
        "Resource": [
          "collection/finance*"
        ]
      }
    ],
    "AllowFromPublic": true
  }
]
```

網路政策可套用至現有集合以及未來的集合。例如，您可以建立集合，然後使用符合集合名稱的規則建立網路政策。您不需要建立網路政策，就能建立集合。

## 考量事項
<a name="serverless-network-considerations"></a>

為集合設定網路存取時，請考慮以下項目：
+ 如果您打算設定集合的 VPC 端點存取，您必須先建立至少一個 [OpenSearch Serverless 受管 VPC 端點](serverless-vpc.md)。
+ 對 的私有存取 AWS 服務 僅適用於集合的 OpenSearch 端點，不適用於 OpenSearch Dashboards 端點。即使 `ResourceType`是 `dashboard`，也 AWS 服務 無法授予 OpenSearch Dashboards 的存取權。
+ 如果集合可從公有網路存取，也可以從所有 OpenSearch Serverless 受管 VPC 端點和所有端點存取 AWS 服務。
+ 多個網路政策可套用至單一集合。如需詳細資訊，請參閱[政策優先順序](#serverless-network-precedence)。

## 設定網路政策所需的許可
<a name="serverless-network-permissions"></a>

OpenSearch Serverless 的網路存取使用下列 AWS Identity and Access Management (IAM) 許可。您可以指定 IAM 條件，將使用者限制在與特定集合關聯的網路政策內。
+ `aoss:CreateSecurityPolicy`：建立網路存取政策。
+ `aoss:ListSecurityPolicies`：列出目前帳戶中的所有網路政策。
+ `aoss:GetSecurityPolicy`：檢視網路存取政策規格。
+ `aoss:UpdateSecurityPolicy`：修改指定的網路存取政策，並變更 VPC ID 或公用存取名稱。
+ `aoss:DeleteSecurityPolicy`：刪除網路存取政策 (在將該政策從所有集合中分離之後)。

下列身分型存取政策讓使用者可以檢視所有網路政策，以及更新包含資源模式 `collection/application-logs` 的政策：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "aoss:UpdateSecurityPolicy"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aoss:collection": "application-logs"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "aoss:ListSecurityPolicies",
                "aoss:GetSecurityPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**注意**  
此外，OpenSearch Serverless 需要集合資源的 `aoss:APIAccessAll`和 `aoss:DashboardsAccessAll`許可。如需詳細資訊，請參閱[使用 OpenSearch API 操作](security-iam-serverless.md#security_iam_id-based-policy-examples-data-plane)。

## 政策優先順序
<a name="serverless-network-precedence"></a>

在某些情況下，網路政策規則的重疊情形可能會在政策內部或跨政策發生。發生這種情況時，指定公有存取的規則會覆寫規則，為*這兩個*規則通用的任何集合指定私有存取。

例如，在下列政策中，這兩個規則都會將網路存取指派給 `finance` 集合，但其中一個規則指定的是 VPC 存取權，而另一個規則指定的是公用存取權。在此情況下，公用存取權僅會覆寫*財務集合的* VPC 存取權 (因為其同時存在於兩個規則中)，因此您可從公用網路存取該財務集合。銷售集合將具有來自指定端點的 VPC 存取權。

```
[
   {
      "Description":"Rule 1",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/sales",
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":false,
      "SourceVPCEs":[
         "vpce-050f79086ee71ac05"
      ]
   },
   {
      "Description":"Rule 2",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":true
   }
]
```

如果來自不同規則的多個 VPC 端點套用至某個集合，則這些為附加規則，且可從所有指定端點存取該集合。如果您將 `AllowFromPublic` 設定為 `true`，但也提供一或多個 `SourceVPCEs` 或 `SourceServices`，則 OpenSearch Serverless 會忽略 VPC 端點和服務識別符，並且相關聯的集合將具有公有存取權。

## 建立網路政策 (主控台)
<a name="serverless-network-console"></a>

網路政策可套用至現有集合以及未來的集合。建議您先建立網路政策，然後再開始建立集合。

**建立 OpenSearch Serverless 網路政策**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽面板中，展開 **Serverless** (無伺服器)，然後選擇 **Network policies** (網路政策)。

1. 選擇 **Create network policy** (建立網路政策)。

1. 提供政策的名稱和描述。

1. 提供一個或多個*規則*。這些規則會定義 OpenSearch Serverless 集合及其 OpenSearch Dashboards 端點的存取許可。

   每個規則都包含下列元素：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-network.html)

   對於您選取的每個資源類型，您可以選擇要將政策設定套用至其中的現有集合，和/或建立一個或多個資源模式。資源模式包含字首和萬用字元 (\$1)，並定義政策設定將套用至的集合。

   例如，如果您包含名為 `Marketing*` 的模式，則名稱以「行銷」開頭的任何新的或現有集合都會將此政策中的網路設定自動套用至其中。單一萬用字元 (`*`) 會將政策套用至所有目前和未來的集合。

   此外，您可以指定*未來*集合的名稱，而不使用萬用字元，例如 `Finance`。OpenSearch Serverless 會將政策設定套用至任何具有相同名稱的新建集合。

1. 如果您對政策組態感到滿意，請選擇 **Create** (建立)。

## 建立網路政策 (AWS CLI)
<a name="serverless-network-cli"></a>

若要使用 OpenSearch Serverless API 操作建立網路政策，您需指定 JSON 格式的規則。[CreateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityPolicy.html) 請求同時接受內嵌政策和 .json 檔案。所有集合和模式採用的格式必須為 `collection/<collection name|pattern>`。

**注意**  
資源類型 `dashboards` 僅允許對 OpenSearch Dashboards 的許可，但若要讓 OpenSearch Dashboards 能夠正常運作，您還必須允許來自相同來源的集合存取權。如需範例，請參閱以下第二個政策。

若要指定私有存取，請包含下列其中一個或兩個元素：
+ `SourceVPCEs` – 指定一或多個 OpenSearch Serverless 受管 VPC 端點。
+ `SourceServices` – 指定一個或多個支援的識別符 AWS 服務。目前支援下列服務識別符：
  + `bedrock.amazonaws.com` – Amazon Bedrock

下列範例網路政策提供對 VPC 端點和 Amazon Bedrock 的私有存取，僅針對字首為 的集合收集端點`log*`。經過驗證的使用者無法登入 OpenSearch Dashboards；他們只能以程式設計方式存取集合端點。

```
[
   {
      "Description":"Private access for log collections",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/log*"
            ]
         }
      ],
      "AllowFromPublic":false,
      "SourceVPCEs":[
         "vpce-050f79086ee71ac05"
      ],
      "SourceServices":[
         "bedrock.amazonaws.com"
      ],
   }
]
```

下列政策會針對名為 `finance` 的單一集合，提供對 OpenSearch 端點*和* OpenSearch Dashboards 的公用存取權。如果該集合不存在，建立集合時，會將網路設定套用至該集合。

```
[
   {
      "Description":"Public access for finance collection",
      "Rules":[
         {
            "ResourceType":"dashboard",
            "Resource":[
               "collection/finance"
            ]
         },
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":true
   }
]
```

下列請求會建立上述網路政策：

```
aws opensearchserverless create-security-policy \
    --name sales-inventory \
    --type network \
    --policy "[{\"Description\":\"Public access for finance collection\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection\/finance\"]},{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/finance\"]}],\"AllowFromPublic\":true}]"
```

若要在 JSON 檔案中提供政策，請使用 `--policy file://my-policy.json` 格式

## 檢視網路政策
<a name="serverless-network-list"></a>

在建立集合之前，您可能想要預覽帳戶中的現有網路政策，以查看哪個政策的資源模式與集合名稱相符。下列 [ListSecurityPolicies](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListSecurityPolicies.html) 請求會列出您帳戶中的所有網路政策：

```
aws opensearchserverless list-security-policies --type network
```

此請求會傳回所有已設定網路政策的相關資訊。若要檢視一個特定政策中定義的模式規則，請在回應中的 `securityPolicySummaries`元素內容中找到政策資訊。請注意此政策`type`的 `name`和 ，並在 [GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html) 請求中使用這些屬性來接收包含下列政策詳細資訊的回應：

```
{
    "securityPolicyDetail": [
        {
            "type": "network",
            "name": "my-policy",
            "policyVersion": "MTY2MzY5MTY1MDA3Ml8x",
            "policy": "[{\"Description\":\"My network policy rule\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection/*\"]}],\"AllowFromPublic\":true}]",
            "createdDate": 1663691650072,
            "lastModifiedDate": 1663691650072
        }
    ]
}
```

若要檢視特定政策的相關詳細資訊，請使用 [GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html) 命令。

## 更新網路政策
<a name="serverless-network-update"></a>

當您修改網路的 VPC 端點或公用存取名稱時，所有關聯的集合都會受到影響。若要更新 OpenSearch Serverless 主控台中的網路政策，請展開 **Network policies** (網路政策)，選取要修改的政策，然後選擇 **Edit** (編輯)。進行變更，然後選擇 **Save** (儲存)。

若要使用 OpenSearch Serverless API 更新網路政策，請使用 [UpdateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityPolicy.html) 命令。您必須在請求中包含政策版本。您可以使用 `ListSecurityPolicies` 或 `GetSecurityPolicy` 命令擷取政策版本。將最新的政策版本納入其中，可確保您不會意外覆寫其他人所做的變更。

下列請求會使用新的政策 JSON 文件更新網路政策：

```
aws opensearchserverless update-security-policy \
    --name sales-inventory \
    --type network \
    --policy-version MTY2MzY5MTY1MDA3Ml8x \
    --policy file://my-new-policy.json
```

## 刪除網路政策
<a name="serverless-network-delete"></a>

您必須將網路政策從所有集合分離，才能將其刪除。若要刪除 OpenSearch Serverless 主控台中的政策，請選取該政策，然後選擇 **Delete** (刪除)。

您也可以使用 [DeleteSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteSecurityPolicy.html) 命令：

```
aws opensearchserverless delete-security-policy --name my-policy --type network
```

# Amazon OpenSearch Serverless 中的 FIPS 合規
<a name="fips-compliance-opensearch-serverless"></a>

Amazon OpenSearch Serverless 支援聯邦資訊處理標準 (FIPS) 140-2，這是美國和加拿大政府標準，可指定保護敏感資訊之密碼編譯模組的安全需求。當您使用 OpenSearch Serverless 連線至已啟用 FIPS 的端點時，密碼編譯操作會使用 FIPS 驗證的密碼編譯程式庫進行。

OpenSearch Serverless FIPS 端點可在支援 FIPS AWS 區域 的 中使用。這些端點使用 TLS 1.2 或更新版本，以及 FIPS 驗證的密碼編譯演算法進行所有通訊。如需詳細資訊，請參閱*AWS 《 驗證存取使用者指南*》中的 [FIPS 合規](https://docs.aws.amazon.com/verified-access/latest/ug/fips-compliance.html)。

**Topics**
+ [搭配 OpenSearch Serverless 使用 FIPS 端點](#using-fips-endpoints-opensearch-serverless)
+ [使用具有 AWS SDKs FIPS 端點](#using-fips-endpoints-aws-sdks)
+ [設定 VPC 端點的安全群組](#configuring-security-groups-vpc-endpoints)
+ [使用 FIPS VPC 端點](#using-fips-vpc-endpoint)
+ [驗證 FIPS 合規](#verifying-fips-compliance)
+ [解決私有託管區域中的 FIPS 端點連線問題](serverless-fips-endpoint-issues.md)

## 搭配 OpenSearch Serverless 使用 FIPS 端點
<a name="using-fips-endpoints-opensearch-serverless"></a>

在支援 FIPS AWS 區域 的情況下，OpenSearch Serverless 集合可透過標準和 FIPS 相容端點存取。如需詳細資訊，請參閱*AWS 《 驗證存取使用者指南*》中的 [FIPS 合規](https://docs.aws.amazon.com/verified-access/latest/ug/fips-compliance.html)。

在下列範例中，將 *collection\$1id* 和 取代*AWS 區域*為您的集合 ID 及其 AWS 區域。
+ **標準端點** – **https://*collection\$1id*.*AWS 區域*.aoss.amazonaws.com**。
+ **FIPS 相容端點** – **https://*collection\$1id*.*AWS 區域*.aoss-fips.amazonaws.com**。

同樣地，OpenSearch Dashboards 可透過標準和 FIPS 相容端點存取：
+ **標準儀表板端點** – **https://*collection\$1id*.*AWS 區域*.aoss.amazonaws.com/\$1dashboards**。
+ **符合 FIPS 標準的儀表板端點** – **https://*collection\$1id*.*AWS 區域*.aoss-fips.amazonaws.com/\$1dashboards**。

**注意**  
在啟用 FIPS 的區域中，標準和 FIPS 相容的端點都提供 FIPS 相容的密碼編譯。FIPS 特定的端點可協助您滿足合規要求，這些要求特別強制在名稱中使用具有 **FIPS** 的端點。

## 使用具有 AWS SDKs FIPS 端點
<a name="using-fips-endpoints-aws-sdks"></a>

使用 AWS SDKs時，您可以在建立用戶端時指定 FIPS 端點。在下列範例中，將 *collection\$1id* 和 取代*AWS 區域*為您的集合 ID 及其 AWS 區域。

```
# Python SDK example
from opensearchpy import OpenSearch, RequestsHttpConnection, AWSV4SignerAuth
import boto3
host = '"https://collection_id.AWS 區域.aoss-fips.amazonaws.com"
region = 'us-west-2'
service = 'aoss'
credentials = boto3.Session().get_credentials()
auth = AWSV4SignerAuth(credentials, region, service)
client = OpenSearch(
    hosts = [{'host': host, 'port': 443}],
    http_auth = auth,
    use_ssl = True,
    verify_certs = True,
    connection_class = RequestsHttpConnection,
    pool_maxsize = 20
)
```

## 設定 VPC 端點的安全群組
<a name="configuring-security-groups-vpc-endpoints"></a>

為了確保與 FIPS 相容的 Amazon VPC (VPC) 端點進行適當通訊，請建立或修改安全群組，以允許來自您 VPC 中需要存取 OpenSearch Serverless 資源的傳入 HTTPS 流量 (TCP 連接埠 443)。然後在建立期間或在建立之後修改端點，將此安全群組與您的 VPC 端點建立關聯。如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》的[建立安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/creating-security-groups.html)。

## 使用 FIPS VPC 端點
<a name="using-fips-vpc-endpoint"></a>

建立 FIPS 相容 VPC 端點後，您可以使用它從 VPC 中的資源存取 OpenSearch Serverless。若要使用 API 操作的端點，請將 SDK 設定為使用區域 FIPS 端點，如 [搭配 OpenSearch Serverless 使用 FIPS 端點](#using-fips-endpoints-opensearch-serverless)一節中所述。對於 OpenSearch Dashboards 存取，請使用集合特定的 Dashboards URL，從 VPC 內存取時，會自動透過 FIPS 相容 VPC 端點路由。如需詳細資訊，請參閱[搭配使用 OpenSearch Dashboards 與 Amazon OpenSearch Service](dashboards.md)。

## 驗證 FIPS 合規
<a name="verifying-fips-compliance"></a>

若要驗證您對 OpenSearch Serverless 的連線是否使用 FIPS 相容密碼編譯，請使用 AWS CloudTrail 來監控對 OpenSearch Serverless 發出的 API 呼叫。檢查 CloudTrail 日誌中的 `eventSource` 欄位是否顯示 API `aoss-fips.amazonaws.com` 呼叫。

對於 OpenSearch Dashboards 存取，您可以使用瀏覽器開發人員工具來檢查 TLS 連線詳細資訊，並確認正在使用符合 FIPS 規範的密碼套件。

# 解決私有託管區域中的 FIPS 端點連線問題
<a name="serverless-fips-endpoint-issues"></a>

FIPS 端點適用於具有公有存取權的 Amazon OpenSearch Serverless 集合。對於使用新建立的 VPC 端點的新建立 VPC 集合，FIPS 端點會如預期運作。對於其他 VPC 集合，您可能需要執行手動設定，以確保 FIPS 端點正確運作。

**在 Amazon Route 53 中設定 FIPS 私有託管區域**

1. 請在 [https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/) 開啟 Route 53 主控台。

1. 檢閱您的託管區域：

   1. 找出 AWS 區域 集合所在的託管區域。

   1. 驗證託管區域命名模式：
      + 非 FIPS 格式：`region.aoss.amazonaws.com`。
      + FIPS 格式：`region.aoss-fips.amazonaws.com`。

   1. 確認所有託管區域的**類型**設定為**私有託管區域**。

1. 如果缺少 FIPS 私有託管區域：

   1. 選取對應的非 FIPS 私有託管區域。

   1. 複製**相關聯的 VPCs**資訊。例如：`vpc-1234567890abcdef0 | us-east-2`。

   1. 尋找萬用字元網域記錄。例如：`*.us-east-2.aoss.amazonaws.com`。

   1. 將**值/路由流量**複製到資訊。例如：`uoc1c1qsw7poexampleewjeno1pte3rw.3ym756xh7yj.aoss.searchservices.aws`。

1. 建立 FIPS 私有託管區域：

   1. 使用 FIPS 格式建立新的私有託管區域。例如：`us-east-2.aoss-fips.amazonaws.com`。

   1. 針對**關聯的 VPCs**，輸入您從非 FIPS 私有託管區域複製的 VPC 資訊。

1. 使用下列設定新增記錄：

   1. 記錄名稱：\$1

   1. 記錄類型：CNAME

   1. 值：輸入您先前複製資訊**的值/路由流量**。

## 常見問題
<a name="serverless-fips-endpoint-common-problems"></a>

如果您遇到與 FIPS 相容之 VPC 端點的連線問題，請使用下列資訊來協助解決問題。
+ DNS 解析失敗 - 您無法解析 VPC 中的 FIPS 端點網域名稱
+ 連線逾時 - 您對 FIPS 端點的請求逾時
+ 存取遭拒錯誤 - 使用 FIPS 端點時身分驗證或授權失敗
+ 缺少僅限 VPC 集合的私有託管區域記錄

**疑難排解 FIPS 端點連線**

1. 驗證您的私有託管區域組態：

   1. 確認 FIPS 端點網域 (`*.region.aoss-fips.amazonaws.com`.

   1. 確認私有託管區域與正確的 VPC 相關聯。

      如需詳細資訊，請參閱《*Amazon Route 53 開發人員指南*》中的[私有託管區域](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted- zones-private.html)，以及《 *AWS PrivateLink 指南*》中的[管理 DNS 名稱](https://docs.aws.amazon.com/vpc/latest/privatelink/manage-dns-names.html)。

1. 測試 DNS 解析：

   1. 連線至 VPC 中的 EC2 執行個體。

   1. 執行以下命令：

      ```
      nslookup collection-id.region.aoss-fips.amazonaws.com
      ```

   1. 確認回應包含 VPC 端點的私有 IP 地址。

      如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的[端點政策和](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints- access.html#endpoint-dns-verification) [DNS 屬性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc- dns-troubleshooting)。

1. 檢查您的安全群組設定：

   1. 確認連接至 VPC 端點的安全群組允許來自 資源的 HTTPS 流量 （連接埠 443)。

   1. 確認 資源的安全群組允許傳出流量到 VPC 端點。

   如需詳細資訊，請參閱《 *AWS PrivateLink 指南*》中的[端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-security-groups)，以及《*Amazon VPC 使用者指南*》中的[安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html#SecurityGroupRules)。

1. 檢閱您的網路 ACL 組態：

   1. 確認網路 ACLs資源與 VPC 端點之間的流量。

     如需詳細資訊，請參閱「Amazon VPC 使用者指南」**中的[網路 ACL](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network- acls.html#nacl-troubleshooting)。

1. 檢閱您的端點政策：

   1. 檢查 VPC 端點政策是否允許 OpenSearch Serverless 資源上的必要動作。

     如需詳細資訊，請參閱《 *AWS PrivateLink 指南*》中的[所需 VPC 端點許可](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html#serverless-vpc-permissions)和[端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints- access.html#vpc-endpoint-policies)。

**提示**  
如果您在 VPC 中使用自訂 DNS 解析程式，請將它們設定為將`*.amazonaws.com`網域的請求轉送至 AWS 伺服器。

# Amazon OpenSearch Serverless 的資料存取控制
<a name="serverless-data-access"></a>

透過 Amazon OpenSearch Serverless 中的資料存取控制，無論使用者的存取機制或網路來源為何，您都可讓使用者存取集合和索引。您可以提供 IAM 角色和 [SAML 身分](serverless-saml.md)的存取權。

您可以透過*資料存取政策*管理許可，這些政策套用至集合和索引資源。資料存取政策會自動將存取許可指派給符合特定模式的集合和索引，以協助您大規模管理集合。可將多個資料存取政策套用至單一資源。請注意，您必須擁有集合的資料存取政策，才能存取 OpenSearch Dashboards URL。

**Topics**
+ [資料存取政策與 IAM 政策比較](#serverless-data-access-vs-iam)
+ [設定資料存取政策所需的 IAM 許可](#serverless-data-access-permissions)
+ [政策語法](#serverless-data-access-syntax)
+ [支援的政策許可](#serverless-data-supported-permissions)
+ [OpenSearch Dashboards 上的範例資料集](#serverless-data-sample-index)
+ [建立資料存取政策 (主控台)](#serverless-data-access-console)
+ [建立資料存取政策 (AWS CLI)](#serverless-data-access-cli)
+ [檢視資料存取政策](#serverless-data-access-list)
+ [更新資料存取政策](#serverless-data-access-update)
+ [刪除資料存取政策](#serverless-data-access-delete)
+ [跨帳戶資料存取](#serverless-data-access-cross)

## 資料存取政策與 IAM 政策比較
<a name="serverless-data-access-vs-iam"></a>

資料存取政策在邏輯上與 AWS Identity and Access Management (IAM) 政策分開。IAM 許可會控制對[無伺服器 API 操作](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/Welcome.html) (例如 `CreateCollection` 和 `ListAccessPolicies`) 的存取。資料存取政策會控制 OpenSearch Serverless 支援之 [OpenSearch 操作](#serverless-data-supported-permissions) (例如 `PUT <index>` 或 `GET _cat/indices`) 的存取。

控制資料存取政策 API 操作 (例如 `aoss:CreateAccessPolicy` 和 `aoss:GetAccessPolicy`，請參閱下一節所述) 存取的 IAM 許可不會影響資料存取政策中指定的許可。

例如，假設 IAM 政策拒絕使用者為 `collection-a` 建立資料存取政策，但允許其為所有集合 (`*`) 建立資料存取政策：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "aoss:CreateAccessPolicy"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "aoss:collection": "collection-a"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "aoss:CreateAccessPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

如果使用者建立的資料存取政策允許*所有*集合 (`collection/*` 或 `index/*/*`) 的特定許可，則該政策將套用至所有集合，包括集合 A。

**重要**  
在資料存取政策中授予許可不足以存取 OpenSearch Serverless 集合中的資料。也必須將 IAM 許可`aoss:APIAccessAll`和 的存取權**授予相關聯的委託人`aoss:DashboardsAccessAll`。這兩個許可都授予集合資源的完整存取權，而 Dashboards 許可也提供 OpenSearch Dashboards 的存取權。如果委託人沒有這兩個 IAM 許可，則在嘗試將請求傳送至集合時，會收到 403 個錯誤。如需詳細資訊，請參閱[使用 OpenSearch API 操作](security-iam-serverless.md#security_iam_id-based-policy-examples-data-plane)。

## 設定資料存取政策所需的 IAM 許可
<a name="serverless-data-access-permissions"></a>

OpenSearch Serverless 的資料存取控制使用下列 IAM 許可。您可以指定 IAM 條件，將使用者限制為特定存取政策名稱。
+ `aoss:CreateAccessPolicy`：建立存取政策。
+ `aoss:ListAccessPolicies`：列出所有存取政策。
+ `aoss:GetAccessPolicy`：請參閱有關特定存取政策的詳細資訊。
+ `aoss:UpdateAccessPolicy`：修改存取政策。
+ `aoss:DeleteAccessPolicy`：刪除存取政策。

下列身分型存取政策讓使用者可以檢視所有存取政策，以及更新包含資源模式 `collection/logs` 的政策。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "aoss:ListAccessPolicies",
                "aoss:GetAccessPolicy"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "aoss:UpdateAccessPolicy"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aoss:collection": [
                        "logs"
                    ]
                }
            }
        }
    ]
}
```

------

**注意**  
此外，OpenSearch Serverless 需要集合資源的 `aoss:APIAccessAll`和 `aoss:DashboardsAccessAll`許可。如需詳細資訊，請參閱[使用 OpenSearch API 操作](security-iam-serverless.md#security_iam_id-based-policy-examples-data-plane)。

## 政策語法
<a name="serverless-data-access-syntax"></a>

資料存取政策包含一組規則，每個規則均包含下列元素：


| Element | Description | 
| --- | --- | 
| ResourceType | 許可套用的資源類型 (集合或索引)。別名和範本許可位於集合層級，而建立、修改和搜尋資料的許可則位於索引層級。如需詳細資訊，請參閱 [Supported policy permissions](#serverless-data-supported-permissions) (支援的政策許可)。 | 
| Resource | 資源名稱和/或模式的清單。模式是字首後接萬用字元 (\$1)，允許關聯的許可套用至多個資源。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-data-access.html) | 
| Permission | 為指定資源授予的許可清單。(如需許可與其允許之 API 操作的完整清單，請參閱 [支援的 OpenSearch API 操作與許可](serverless-genref.md#serverless-operations))。 | 
| Principal | 要授予存取權的一個或多個主體清單。主體可以是 IAM 角色 ARN，也可以是 SAML 身分。這些主體必須在目前的 AWS 帳戶內。資料存取政策不直接支援跨帳戶存取，但您可以在政策中包含角色，而來自不同 的使用者 AWS 帳戶 可以在集合擁有帳戶中擔任該角色。如需詳細資訊，請參閱[跨帳戶資料存取](#serverless-data-access-cross)。 | 

下列範例政策會將別名和範本許可授予名為 `autopartsinventory` 的集合以及任何以字首 `sales*` 開頭的集合。同時也會將讀取和寫入許可授予 `autopartsinventory` 集合中的所有索引，以及以字首 `orders*` 開頭的 `salesorders` 集合中的任何索引。

```
[
   {
      "Description": "Rule 1",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/autopartsinventory",
               "collection/sales*"
            ],
            "Permission":[
               "aoss:CreateCollectionItems",
               "aoss:UpdateCollectionItems",
               "aoss:DescribeCollectionItems"
            ]
         },
         {
            "ResourceType":"index",
            "Resource":[
               "index/autopartsinventory/*",
               "index/salesorders/orders*"
            ],
            "Permission":[
               "aoss:*"
            ]
         }
      ],
      "Principal":[
         "arn:aws:iam::123456789012:user/Dale",
         "arn:aws:iam::123456789012:role/RegulatoryCompliance",
         "saml/123456789012/myprovider/user/Annie",
         "saml/123456789012/anotherprovider/group/Accounting"
      ]
   }
]
```

您無法在政策中明確拒絕存取。因此，所有政策許可均可附加。例如，若一個政策授予使用者 `aoss:ReadDocument`，而另一個政策授予 `aoss:WriteDocument`，則使用者將同時擁有*兩個*許可。如果第三個政策授予相同的使用者 `aoss:*`，則使用者可以對關聯的索引執行*所有*動作；限制較多的許可不會覆寫限制較少的許可。

## 支援的政策許可
<a name="serverless-data-supported-permissions"></a>

資料存取政策支援下列許可。如需了解每個許可允許的 OpenSearch API 操作，請參閱 [支援的 OpenSearch API 操作與許可](serverless-genref.md#serverless-operations)。

**集合許可**
+ `aoss:CreateCollectionItems`
+ `aoss:DeleteCollectionItems`
+ `aoss:UpdateCollectionItems`
+ `aoss:DescribeCollectionItems`
+ `aoss:*`

**索引許可**
+ `aoss:ReadDocument`
+ `aoss:WriteDocument`
+ `aoss:CreateIndex`
+ `aoss:DeleteIndex`
+ `aoss:UpdateIndex`
+ `aoss:DescribeIndex`
+ `aoss:*`

## OpenSearch Dashboards 上的範例資料集
<a name="serverless-data-sample-index"></a>

OpenSearch Dashboards 提供範例[資料集](https://opensearch.org/docs/latest/dashboards/quickstart-dashboards/#adding-sample-data)，其中包含視覺化、儀表板和其他工具，協助您在新增自己的資料之前探索 Dashboards。若要從此範例資料建立索引，您需要一個資料存取政策，以提供您要使用之資料集的許可。下列政策使用萬用字元 (`*`) 為所有三個範例資料集提供許可。

```
[
  {
    "Rules": [
      {
        "Resource": [
          "index/<collection-name>/opensearch_dashboards_sample_data_*"
        ],
        "Permission": [
          "aoss:CreateIndex",
          "aoss:DescribeIndex",
          "aoss:ReadDocument"
        ],
        "ResourceType": "index"
      }
    ],
    "Principal": [
      "arn:aws:iam::<account-id>:user/<user>"
    ]
  }
]
```

## 建立資料存取政策 (主控台)
<a name="serverless-data-access-console"></a>

您可以使用視覺化編輯器，或以 JSON 格式建立資料存取政策。當您建立集合時，系統會將對應的許可指派給符合政策中定義模式之一的任何新集合。

**建立 OpenSearch Serverless 資料存取政策**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，展開**無伺服器**，然後在**安全性**下選擇**資料存取政策**。

1. 選擇 **Create access policy** (建立存取政策)。

1. 提供政策的名稱和描述。

1. 為政策中的第一個規則提供名稱。例如，"Logs collection access" (日誌集合存取)。

1. 選擇 **Add principals** (新增主體)，然後選取要向其提供資料存取權的一個或多個 IAM 角色或 [SAML 使用者和群組](serverless-saml.md)。
**注意**  
若要從下拉式選單中選取主體，您必須具有 `iam:ListUsers` 和 `iam:ListRoles` 許可 (對於 IAM 主體) 和 `aoss:ListSecurityConfigs` 許可 (對於 SAML 身分)。

1. 選擇 **Grant** (授予)，然後選取別名、範本和索引許可，以授予關聯的主體。如需完整的許可及其允許之存取的完整清單，請參閱 [支援的 OpenSearch API 操作與許可](serverless-genref.md#serverless-operations)。

1. (選用) 設定政策的其他規則。

1. 選擇**建立**。在您建立政策與強制執行許可之間，可能會有大約一分鐘的延遲時間。如果延遲超過 5 分鐘，請聯絡 [支援](https://console.aws.amazon.com/support/home)。

**重要**  
如果您的政策僅包含索引許可 (而且沒有集合許可)，您可能仍會看到相符集合的訊息，表示 `Collection cannot be accessed yet. Configure data access policies so that users can access the data within this collection`。您可以忽略此警告。允許的主體仍然可以對集合執行其指派的索引相關操作。

## 建立資料存取政策 (AWS CLI)
<a name="serverless-data-access-cli"></a>

若要使用 OpenSearch Serverless API 建立資料存取政策，請使用 `CreateAccessPolicy` 命令。該命令接受內嵌政策和 .json 檔案。內嵌政策必須編碼為 [JSON 逸出字串](https://www.freeformatter.com/json-escape.html)。

下列請求會建立資料存取政策：

```
aws opensearchserverless create-access-policy \
    --name marketing \
    --type data \
    --policy "[{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"],\"Permission\":[\"aoss:UpdateCollectionItems\"]},{\"ResourceType\":\"index\",\"Resource\":[\"index/autopartsinventory/*\",\"index/salesorders/orders*\"],\"Permission\":[\"aoss:ReadDocument\",\"aoss:DescribeIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:user/Shaheen\"]}]"
```

若要在 .json 檔案中提供政策，請使用格式 `--policy file://my-policy.json`。

包含在政策中的主體現在可以使用其獲得存取權的 [OpenSearch 操作](#serverless-data-supported-permissions)。

## 檢視資料存取政策
<a name="serverless-data-access-list"></a>

在建立集合之前，您可能想要預覽帳戶中的現有資料存取政策，以查看哪個政策的資源模式與集合名稱相符。下列 [ListAccessPolicies](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListAccessPolicies.html) 請求會列出您帳戶中的所有資料存取政策：

```
aws opensearchserverless list-access-policies --type data
```

該請求會傳回所有已設定資料存取政策的相關資訊。若要檢視一個特定政策中定義的模式規則，請在回應中的 `accessPolicySummaries`元素內容中找到政策資訊。請注意此政策`type`的 `name`和 ，並在 [GetAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetAccessPolicy.html) 請求中使用這些屬性來接收包含下列政策詳細資訊的回應：

```
{
    "accessPolicyDetails": [
        {
            "type": "data",
            "name": "my-policy",
            "policyVersion": "MTY2NDA1NDE4MDg1OF8x",
            "description": "My policy",
            "policy": "[{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"],\"Permission\":[\"aoss:UpdateCollectionItems\"]},{\"ResourceType\":\"index\",\"Resource\":[\"index/autopartsinventory/*\",\"index/salesorders/orders*\"],\"Permission\":[\"aoss:ReadDocument\",\"aoss:DescribeIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:user/Shaheen\"]}]",
            "createdDate": 1664054180858,
            "lastModifiedDate": 1664054180858
        }
    ]
}
```

您可以包含資源篩選條件，將結果限制為包含特定集合或索引的政策：

```
aws opensearchserverless list-access-policies --type data --resource "index/autopartsinventory/*"
```

若要檢視有關特定政策的詳細資訊，請使用 [GetAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetAccessPolicy.html) 命令。

## 更新資料存取政策
<a name="serverless-data-access-update"></a>

當您更新資料存取政策時，所有關聯的集合均會受到影響。若要在 OpenSearch Serverless 主控台中更新資料存取政策，請選擇 **Data access control** (資料存取控制)，選取要修改的政策，然後選擇 **Edit** (編輯)。進行變更，然後選擇 **Save** (儲存)。

若要使用 OpenSearch Serverless API 更新資料存取政策，請傳送 `UpdateAccessPolicy` 請求。您必須包含政策版本，您可以使用 `ListAccessPolicies` 或 `GetAccessPolicy` 命令擷取該版本。將最新的政策版本納入其中，可確保您不會意外覆寫其他人所做的變更。

下列 [UpdateAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateAccessPolicy.html) 請求會使用新的政策 JSON 文件更新資料存取政策：

```
aws opensearchserverless update-access-policy \
    --name sales-inventory \
    --type data \
    --policy-version MTY2NDA1NDE4MDg1OF8x \
    --policy file://my-new-policy.json
```

在您更新政策與強制執行新許可之間，可能會有幾分鐘的延遲時間。

## 刪除資料存取政策
<a name="serverless-data-access-delete"></a>

當您刪除資料存取政策時，所有關聯的集合均會失去政策中定義的存取權。在刪除政策之前，請確保您的 IAM 和 SAML 使用者具有集合的適當存取權。若要刪除 OpenSearch Serverless 主控台中的政策，請選取該政策，然後選擇 **Delete** (刪除)。

您也可以使用 [DeleteAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteAccessPolicy.html) 命令：

```
aws opensearchserverless delete-access-policy --name my-policy --type data
```

## 跨帳戶資料存取
<a name="serverless-data-access-cross"></a>

雖然您無法建立具有跨帳戶身分或跨帳戶集合的資料存取政策，但您仍然可以使用擔任角色選項來設定跨帳戶存取。例如，如果 `account-a`擁有`account-b`需要存取的集合，則來自 的使用者可以在 中`account-b`擔任角色`account-a`。角色必須具有 IAM 許可`aoss:APIAccessAll`和 `aoss:DashboardsAccessAll`，並包含在 上的資料存取政策中`account-a`。

# 透過 的資料平面存取 AWS PrivateLink
<a name="serverless-vpc"></a>

Amazon OpenSearch Serverless 支援控制平面和資料平面操作的兩種 AWS PrivateLink 連線類型。控制平面操作包括建立和刪除集合，以及管理存取政策。資料平面操作用於編製索引和查詢集合中的資料。此頁面涵蓋資料平面 VPC 端點。如需控制平面 AWS PrivateLink 端點的資訊，請參閱 [透過 控制平面存取 AWS PrivateLink](serverless-vpc-cp.md)。

您可以使用 在 VPC 和 Amazon OpenSearch Serverless 之間 AWS PrivateLink 建立私有連線。您可以像在 VPC 中一樣存取 OpenSearch Serverless，無需使用網際網路閘道、NAT 裝置、VPN 連接或 Direct Connect 連線。VPC 中的執行個體無需公有 IP 地址，即可存取 OpenSearch Serverless。如需 VPC 網路存取的詳細資訊，請參閱 [Amazon OpenSearch Serverless 的網路連線模式](https://aws.amazon.com/blogs/big-data/network-connectivity-patterns-for-amazon-opensearch-serverless/)。

您可以建立由 AWS PrivateLink提供支援的*介面端點*來建立此私有連線。我們會在您為介面端點指定的每個子網路中建立端點網路介面。這些是請求者受管網路介面，可作為目的地為 OpenSearch Serverless 之流量的進入點。

如需詳細資訊，請參閱《*AWS PrivateLink 指南*》中的「[透過 AWS PrivateLink存取 AWS 服務](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html)」。

**Topics**
+ [集合端點的 DNS 解析](#vpc-endpoint-dnc)
+ [VPCs和網路存取政策](#vpc-endpoint-network)
+ [VPCs和端點政策](#vpc-endpoint-policy)
+ [考量事項](#vpc-endpoint-considerations)
+ [必要許可](#serverless-vpc-permissions)
+ [建立 OpenSearch Serverless 的介面端點](#serverless-vpc-create)
+ [Amazon OpenSearch Serverless 的共用 VPC 設定](#shared-vpc-setup)

## 集合端點的 DNS 解析
<a name="vpc-endpoint-dnc"></a>

當您透過 OpenSearch Serverless 主控台建立資料平面 VPC 端點時，服務會建立新的 Amazon Route 53 [私有託管區域](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html)，並將其連接到 VPC。此私有託管區域包含記錄，可將 OpenSearch Serverless 集合 (`*.us-east-1.aoss.amazonaws.com`) 的萬用字元 DNS 記錄解析為用於端點的介面地址。您只需要 VPC 中的一個 OpenSearch Serverless VPC 端點，即可存取每個端點中的任何和所有集合和儀表板 AWS 區域。每個具有 OpenSearch Serverless 端點的 VPC 都連接了自己的私有託管區域。

OpenSearch Serverless 介面端點也會為區域中所有集合建立公有 Route 53 萬用字元 DNS 記錄。DNS 名稱解析為 OpenSearch Serverless 公有 IP 地址。VPCs中沒有 OpenSearch Serverless VPC 端點的用戶端或公有網路中的用戶端可以使用公有 Route 53 解析程式，並使用這些 IP 地址存取集合和儀表板。VPC 端點的 IP 地址類型 (IPv4、IPv6 或 Dualstack) 取決於您[為 OpenSearch Serverless 建立介面端點](#serverless-vpc-create)時提供的子網路。

**注意**  
OpenSearch Serverless 會為 OpenSearch Service 網域解析建立附加的 Amazon Route 53 私有託管區域 (``<region>.opensearch.amazonaws.com``)。您可以使用 中的 [update-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/update-vpc-endpoint.html) 命令，將現有的 IPv4 VPC 端點更新為 Dualstack AWS CLI。

指定 VPC 的 DNS 解析程式地址是 VPC CIDR 的第二個 IP 地址。VPC 中的任何用戶端都需要使用該解析程式來取得任何集合的 VPC 端點地址。解析程式使用 OpenSearch Serverless 建立的私有託管區域。對任何帳戶中的所有集合使用該解析程式就已足夠。也可以將 VPC 解析程式用於某些集合端點，將公有解析程式用於其他端點，但通常不需要。

## VPCs和網路存取政策
<a name="vpc-endpoint-network"></a>

若要為您的集合授予 OpenSearch APIs和 Dashboards 的網路許可，您可以使用 OpenSearch Serverless [網路存取政策](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html)。您可以從 VPC 端點 （或公有網際網路） 控制此網路存取。由於您的網路政策僅控制流量許可，因此您還必須設定[資料存取政策](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html)，指定在集合及其索引中的資料上操作的許可。將 OpenSearch Serverless VPC 端點視為服務的存取點、將網路存取政策視為集合和儀表板的網路層級存取點，並將資料存取政策視為集合中任何資料操作的精細存取控制存取點。

由於您可以在網路政策中指定多個 VPC IDs，我們建議您為每個需要存取集合的 VPC 建立 VPC 端點。這些 VPCs可以屬於與擁有 OpenSearch Serverless 集合和網路政策的帳戶不同的 AWS 帳戶。我們不建議您在兩個帳戶之間建立 VPC-to-VPC對 VPC 對等互連或其他代理解決方案，以便一個帳戶的 VPC 可以使用另一個帳戶的 VPC 端點。這比每個 VPC 都有自己的端點更不安全且更具成本效益。另一個 VPC 的管理員在網路政策中設定該 VPC 端點的存取權，將無法輕鬆看見第一個 VPC。

## VPCs和端點政策
<a name="vpc-endpoint-policy"></a>

 Amazon OpenSearch Serverless 支援 VPCs端點政策。端點政策是您連接到 VPC 端點的 IAM 資源型政策，以控制哪些 AWS 主體可以使用端點存取您的 AWS 服務。如需詳細資訊，請參閱[使用端點政策控制對 VPC 端點的存取](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

若要使用端點政策，您必須先建立介面端點。您可以使用 OpenSearch Serverless 主控台或 OpenSearch Serverless API 建立介面端點。建立介面端點之後，您需要將端點政策新增至端點。如需詳細資訊，請參閱[建立 OpenSearch Serverless 的介面端點](#serverless-vpc-create)。

**注意**  
您無法直接在 OpenSearch Service 主控台中定義端點政策。

端點政策不會覆寫或取代您可能已設定的其他身分型政策、資源型政策、網路政策或資料存取政策。如需更新端點政策的詳細資訊，請參閱[使用端點政策控制對 VPC 端點的存取](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

根據預設，端點政策會授予 VPC 端點的完整存取權。

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

雖然預設 VPC 端點政策會授予完整端點存取權，但您可以設定 VPC 端點政策，以允許存取特定角色和使用者。若要執行此作業，請參閱下列範例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "123456789012",
                    "987654321098"
                ]
            },
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

------

您可以指定要包含在 VPC 端點政策中的 OpenSearch Serverless 集合做為條件元素。若要執行此作業，請參閱下列範例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aoss:collection": [
                        "coll-abc"
                    ]
                }
            }
        }
    ]
}
```

------

支援 `aoss:CollectionId` 。

```
Condition": {
         "StringEquals": {
               "aoss:CollectionId": "collection-id"
          }
}
```

您可以在 VPC 端點政策中使用 SAML 身分來判斷 VPC 端點存取。您必須在 VPC `(*)` 端點政策的主體區段中使用萬用字元。若要執行此作業，請參閱下列範例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "saml:cn": [
                        "saml/111122223333/idp123/group/football",
                        "saml/111122223333/idp123/group/soccer",
                        "saml/111122223333/idp123/group/cricket"
                    ]
                }
            }
        }
    ]
}
```

------

此外，您可以設定端點政策以包含特定的 SAML 主體政策。若要執行此作業，請參閱下列內容：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalTag/Department": [
                        "Engineering"]
                    }
                }
            }
        ]
    }
```

------

如需搭配 Amazon OpenSearch Serverless 使用 SAML 身分驗證的詳細資訊，請參閱 [Amazon OpenSearch Serverless 的 SAML 身分驗證](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html)。

您也可以在相同的 VPC 端點政策中包含 IAM 和 SAML 使用者。若要執行此作業，請參閱下列範例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "saml:cn": [
                        "saml/111122223333/idp123/group/football",
                        "saml/111122223333/idp123/group/soccer",
                        "saml/111122223333/idp123/group/cricket"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "111122223333"
                ]
            },
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

------

您也可以透過界面 VPC 端點從 Amazon EC2 存取 Amazon OpenSearch Serverless 集合。如需詳細資訊，請參閱[從 Amazon EC2 存取 OpenSearch Serverless 集合 （透過界面 VPC 端點）](https://aws.amazon.com/blogs/big-data/network-connectivity-patterns-for-amazon-opensearch-serverless/)。

## 考量事項
<a name="vpc-endpoint-considerations"></a>

設定 OpenSearch Serverless 的介面端點前，請考量下列事項：
+ OpenSearch Serverless 支援透過介面端點呼叫所有支援的 [OpenSearch API 操作](serverless-genref.md#serverless-operations) (非組態 API 操作)。
+ 建立 OpenSearch Serverless 的介面端點後，您仍需要將其包含在[網路存取政策](serverless-network.md)中，才能存取無伺服器集合。
+ 依預設，允許透過端點介面對 OpenSearch Serverless 進行完整存取。您可以將安全群組與端點網路介面建立關聯，以透過介面端點控制傳送至 OpenSearch Serverless 的流量。
+ 單一 最多可 AWS 帳戶 有 50 個 OpenSearch Serverless VPC 端點。
+ 如果您在網路政策中啟用對集合 API 或儀表板的公有網際網路存取，則任何 VPC 和公有網際網路都可以存取集合。
+ 如果您是內部部署和 VPC 外部，則無法直接使用 DNS 解析程式進行 OpenSearch Serverless VPC 端點解析。如果您需要 VPN 存取，VPC 需要 DNS 代理解析程式，外部用戶端才能使用。Route 53 提供傳入端點選項，可讓您從內部部署網路或其他 VPC 將 DNS 查詢解析至 VPC。
+ OpenSearch Serverless 建立並連接至 VPC 的私有託管區域由 服務管理，但會顯示在您的 Amazon Route 53 資源中，並向您的 帳戶收費。
+ 如需其他考量，請參閱《AWS PrivateLink 指南》**中的[考量事項](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#considerations-interface-endpoints)。

## 必要許可
<a name="serverless-vpc-permissions"></a>

OpenSearch Serverless 的 VPC 存取使用下列 AWS Identity and Access Management (IAM) 許可。您可以指定 IAM 條件，將使用者限制在特定集合內。
+ `aoss:CreateVpcEndpoint`：建立 VPC 端點。
+ `aoss:ListVpcEndpoints`：列出所有 VPC 端點。
+ `aoss:BatchGetVpcEndpoint`：查看有關 VPC 端點子集的詳細資訊。
+ `aoss:UpdateVpcEndpoint`：修改 VPC 端點。
+ `aoss:DeleteVpcEndpoint`：刪除 VPC 端點。

此外，您需要下列 Amazon EC2 和 Route 53 許可，才能建立 VPC 端點。
+ `ec2:CreateTags`
+ `ec2:CreateVpcEndpoint`
+ `ec2:DeleteVpcEndPoints`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeVpcEndpoints`
+ `ec2:DescribeVpcs`
+ `ec2:ModifyVpcEndPoint`
+ `route53:AssociateVPCWithHostedZone`
+ `route53:ChangeResourceRecordSets`
+ `route53:CreateHostedZone`
+ `route53:DeleteHostedZone`
+ `route53:GetChange`
+ `route53:GetHostedZone`
+ `route53:ListHostedZonesByName`
+ `route53:ListHostedZonesByVPC`
+ `route53:ListResourceRecordSets`

## 建立 OpenSearch Serverless 的介面端點
<a name="serverless-vpc-create"></a>

您可以使用主控台或 OpenSearch Serverless API 來建立 OpenSearch Serverless 的介面端點。

**建立 OpenSearch Serverless 集合的介面端點**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，展開 **Serverless** (無伺服器)，然後選擇 **VPC endpoints** (VPC 端點)。

1. 選擇 **Create VPC endpoint** (建立 VPC 端點)。

1. 提供端點的名稱。

1. 針對 **VPC**，選取您將從中存取 OpenSearch Serverless 的 VPC。

1. 針對**子網路**，選取您將從中存取 OpenSearch Serverless 的一個子網路。
   + 端點的 IP 地址和 DNS 類型是以子網路類型為基礎
     + Dualstack：如果所有子網路同時具有 IPv4 和 IPv6 地址範圍
     + IPv6：如果所有子網路都是僅限 IPv6 的子網路
     + IPv4：如果所有子網路都有 IPv4 地址範圍

1. 對於 **Security group** (安全群組)，選取要與端點網路介面建立關聯的安全群組。這是一個關鍵步驟，您可以在其中限制您授權至端點之傳入流量的連接埠、通訊協定和來源。請確定安全群組規則允許將使用 VPC 端點與 OpenSearch Serverless 通訊的資源，以便與端點網路介面通訊。

1. 選擇**建立端點**。

若要使用 OpenSearch Serverless API 建立 VPC 端點，請使用 `CreateVpcEndpoint` 命令。

**注意**  
建立端點後，請記下其 ID (例如 `vpce-abc123def4EXAMPLE`)。若要提供端點存取權給您的集合，您必須在一個或多個網路存取政策中包含此 ID。

建立介面端點後，您必須透過網路存取政策，為其提供集合的存取權。如需詳細資訊，請參閱[Amazon OpenSearch Serverless 的網路存取](serverless-network.md)。

## Amazon OpenSearch Serverless 的共用 VPC 設定
<a name="shared-vpc-setup"></a>

您可以使用 Amazon Virtual Private Cloud (VPC) AWS 帳戶 與組織中的其他 共用 VPC 子網路，以及在多個資源之間共用聯網基礎設施，例如 VPN AWS 帳戶。

目前，Amazon OpenSearch Serverless 不支援在共用 VPC 中建立 AWS PrivateLink 連線，除非您是該 VPC 的擁有者。 AWS PrivateLink 也不支援在兩者之間共用連線 AWS 帳戶。

不過，根據 OpenSearch Serverless 的彈性和模組化架構，您仍然可以設定共用 VPC。這是因為 OpenSearch Serverless 網路基礎設施與個別集合 (OpenSearch Service) 基礎設施的基礎設施不同。因此，您可以為 AWS PrivateLink VPCe 所在的一個帳戶建立 VPCe 端點，然後在其他帳戶的網路政策中使用 VPCe ID 來限制來自該共用 VPC 的流量。

下列程序是指*擁有者帳戶*和*消費者帳戶*。

擁有者帳戶充當常見的聯網帳戶，您可以在其中設定 VPC 並與其他帳戶共用。消費者帳戶是那些在擁有者帳戶與其共用的 VPC 中建立和維護其 OpenSearch Serverless 集合的帳戶。

**先決條件**  
在設定共用 VPC 之前，請確定符合下列要求：
+ 預期的擁有者帳戶必須已在 Amazon Virtual Private Cloud 中設定 VPC、子網路、路由表和其他必要資源。如需詳細資訊，請參閱《[Amazon VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/userguide/)》**。
+ 預期的擁有者帳戶和取用者帳戶必須屬於其中的相同組織 AWS Organizations。如需詳細資訊，請參閱*「[AWS Organizations 使用者指南」](https://docs.aws.amazon.com/organizations/latest/userguide/)*。

**在擁有者帳戶/常用聯網帳戶中設定共用 VPC。**

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 請遵循 [建立 OpenSearch Serverless 的介面端點](#serverless-vpc-create) 中的步驟。執行此作業時，請進行下列選擇：
   + 選取與您組織中消費者帳戶共用的 VPC 和子網路。

1. 建立端點之後，請記下產生的 VPCe ID，並將其提供給要在消費者帳戶中執行設定任務的管理員。

   VPCe IDs的格式為 `vpce-abc123def4EXAMPLE`。

**在消費者帳戶中設定共用 VPC**

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 如果您還沒有集合，請使用 中的資訊[管理 Amazon OpenSearch Serverless 集合](serverless-manage.md)來建立集合。

1. 使用 中的資訊來[建立網路政策 (主控台)](serverless-network.md#serverless-network-console)建立網路政策。執行此作業時，請進行下列選擇。
**注意**  
您也可以為此目的更新現有的網路政策。

   1. 針對**存取類型**，選取 **VPC （建議）**。

   1. 對於**要存取的 VPC 端點**，請選擇擁有者帳戶提供給您的 VPCe ID，格式為 `vpce-abc123def4EXAMPLE`。

   1. 在**資源類型**區域中，執行下列動作：
      + 選取**啟用對 OpenSearch 端點的存取**方塊，然後選取要用來從該共用 VPC 啟用存取的集合名稱或集合模式。
      + 選取**啟用對 OpenSearch Dashboard 的存取**方塊，然後選取要用來從該共用 VPC 啟用存取的集合名稱或集合模式。

1. 針對新政策，選擇**建立**。針對現有的政策，選擇**更新**。

# 透過 控制平面存取 AWS PrivateLink
<a name="serverless-vpc-cp"></a>

Amazon OpenSearch Serverless 支援控制平面和資料平面操作的兩種 AWS PrivateLink 連線類型。控制平面操作包括建立和刪除集合，以及管理存取政策。資料平面操作用於編製索引和查詢集合中的資料。此頁面涵蓋控制平面 AWS PrivateLink 端點。如需資料平面 VPC 端點的資訊，請參閱 [透過 的資料平面存取 AWS PrivateLink](serverless-vpc.md)。

## 建立控制平面 AWS PrivateLink 端點
<a name="serverless-vpc-privatelink"></a>

您可以將 OpenSearch Serverless 設定為使用介面 VPC 端點，以改善 VPC 的安全狀態。介面端點採用 AWS PrivateLink 技術。此技術可讓您在沒有網際網路閘道、NAT 裝置、VPN 連線或 AWS Direct Connect 連線的情況下，私下存取 OpenSearch Serverless APIs。

如需 AWS PrivateLink 和 VPC 端點的詳細資訊，請參閱《Amazon [VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/privatelink/concepts.html#concepts-vpc-endpoints)》中的 VPC 端點。

### 考量事項
<a name="serverless-vpc-cp-considerations"></a>
+ VPC 端點僅在相同區域內受支援。
+ 透過 Amazon Route 53，VPC 端點僅支援 Amazon 提供的 DNS。
+ VPC 端點支援端點政策，以控制對 OpenSearch Serverless 集合、政策和 VpcEndpoints 的存取。
+ OpenSearch Serverless 僅支援界面端點。不支援閘道端點。

### 建立 VPC 端點
<a name="serverless-vpc-cp-create"></a>

若要為 Amazon OpenSearch Serverless 建立控制平面 VPC 端點，請使用《*Amazon VPC 開發人員指南*》中的[使用介面 VPC 端點程序存取 AWS 服務](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint)。建立下列端點：
+ `com.amazonaws.region.aoss`

**使用主控台建立控制平面 VPC 端點**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中選擇 **Endpoints (端點)**。

1. 選擇**建立端點**。

1. 對於 **Service category** (服務類別)，選擇 **AWS 服務**。

1. 針對**服務**，選擇 `com.amazonaws.region.aoss`。例如 `com.amazonaws.us-east-1.aoss`。

1. 針對 **VPC**，選擇要在其中建立端點的 VPC。

1. 對於 **Subnets (子網路)**，請選擇欲建立端點的子網路 (可用區域)。

1. 針對**安全群組**，選擇要與端點網路介面建立關聯的安全群組。確保允許 HTTPS （連接埠 443)。

1. 針對**政策**，選擇**完整存取**以允許所有操作，或選擇**自訂**以連接自訂政策。

1. 選擇**建立端點**。

### 建立端點政策
<a name="serverless-vpc-cp-endpoint-policy"></a>

您可以將端點政策連接至 VPC 端點，以控制對 Amazon OpenSearch Serverless 的存取。此政策會指定下列資訊：
+ 可執行動作的主體。
+ 可執行的動作。
+ 可供執行動作的資源。

如需詳細資訊，請參閱 *Amazon VPC 使用者指南*中的[使用 VPC 端點控制對服務的存取](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

**Example OpenSearch Serverless 的 VPC 端點政策**  

```
{  
  "Version": "2012-10-17",		 	 	   
  "Statement": [  
    {  
      "Effect": "Allow",  
      "Principal": "*",  
      "Action": [  
        "aoss:ListCollections",  
        "aoss:BatchGetCollection"  
      ],  
      "Resource": "*"  
    }  
  ]  
}
```

**Example 限制性政策僅允許列出操作**  

```
{  
  "Version": "2012-10-17",		 	 	   
  "Statement": [  
    {  
      "Effect": "Allow",  
      "Principal": "*",  
      "Action": "aoss:ListCollections",  
      "Resource": "*"  
    }  
  ]  
}
```

# Amazon OpenSearch Serverless 的 SAML 身分驗證
<a name="serverless-saml"></a>

您可以透過 Amazon OpenSearch Serverless 的 SAML 身分驗證，使用現有身分提供者，為無伺服器集合的 OpenSearch Dashboards 端點提供單一登入 (SSO)。

SAML 身分驗證讓您可以使用第三方身分提供者，登入 OpenSearch Dashboards，以便為資料編製索引和進行搜尋。OpenSearch Serverless 支援使用 SAML 2.0 標準的提供者，例如 IAM Identity Center、Okta、Keycloak、Active Directory Federation Services (AD FS) 和 Auth0。您可以設定 IAM Identity Center 來同步來自其他身分來源的使用者和群組，例如 Okta、OneLogin 和 Microsoft Entra ID。如需 IAM Identity Center 支援的身分來源清單以及設定這些來源的步驟，請參閱《*IAM Identity Center 使用者指南*[》中的入門教學](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html)課程。

**注意**  
SAML 身分驗證僅適用於透過 Web 瀏覽器存取 OpenSearch Dashboards。經驗證的使用者只能透過 OpenSearch Dashboards 中的**開發工具**，向 OpenSearch API 操作發出請求。SAML 憑證*不能*讓您對 OpenSearch API 操作發出直接 HTTP 請求。

若要設定 SAML 身分驗證，您應先設定 SAML 身分提供者 (IdP)。然後，您可以將該 IdP 中的一個或多個使用者納入[資料存取政策](serverless-data-access.md)中。此政策會向它授予集合和/或索引的某些許可。然後，使用者可以登入 OpenSearch Dashboards，並執行資料存取政策中允許的動作。

![\[SAML authentication flow with data access policy, OpenSearch interface, and JSON configuration.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-saml-flow.png)


**Topics**
+ [考量事項](#serverless-saml-considerations)
+ [必要許可](#serverless-saml-permissions)
+ [建立 SAML 提供者 (主控台)](#serverless-saml-creating)
+ [存取 OpenSearch Dashboards](#serverless-saml-dashboards)
+ [授予 SAML 身分對集合資料的存取權](#serverless-saml-policies)
+ [建立 SAML 提供者 (AWS CLI)](#serverless-saml-creating-api)
+ [檢視 SAML 提供者](#serverless-saml-viewing)
+ [更新 SAML 提供者](#serverless-saml-updating)
+ [刪除 SAML 提供者](#serverless-saml-deleting)

## 考量事項
<a name="serverless-saml-considerations"></a>

設定 SAML 身分驗證時請考量下列事項：
+ 不支援已簽署和已加密的請求。
+ 不支援已加密的聲明。
+ 不支援 IdP 啟動的身分驗證和登出。
+ 在非 IAM 身分的情況下，服務控制政策 (SCP) 將不適用或評估 （例如 Amazon OpenSearch Serverless & SAML 中的 SAML 和 Amazon OpenSearch Service 的基本內部使用者授權）。

## 必要許可
<a name="serverless-saml-permissions"></a>

OpenSearch Serverless 的 SAML 身分驗證使用下列 AWS Identity and Access Management (IAM) 許可：
+ `aoss:CreateSecurityConfig`：建立 SAML 提供者。
+ `aoss:ListSecurityConfig`：列出目前帳戶中的所有 SAML 提供者。
+ `aoss:GetSecurityConfig`：檢視 SAML 提供者資訊。
+ `aoss:UpdateSecurityConfig`：修改指定的 SAML 提供者組態，包括 XML 中繼資料。
+ `aoss:DeleteSecurityConfig`：刪除 SAML 提供者。

下列身分型存取政策讓使用者可以管理所有 IdP 組態：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "aoss:CreateSecurityConfig",
                "aoss:DeleteSecurityConfig",
                "aoss:GetSecurityConfig",
                "aoss:UpdateSecurityConfig",
                "aoss:ListSecurityConfigs"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

請注意，`Resource` 元素必須是萬用字元。

## 建立 SAML 提供者 (主控台)
<a name="serverless-saml-creating"></a>

這些步驟說明如何建立 SAML 提供者。這可透過 OpenSearch Dashboards 的服務提供者 (SP) 啟動的身分驗證來啟用 SAML 身分驗證。不支援 IdP 啟動的身分驗證。

**啟用 OpenSearch Dashboards 的 SAML 身分驗證**

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home )。

1. 在左側導覽面板上，展開 **Serverless** (無伺服器)，然後選擇 **SAML authentication** (SAML 身分驗證)。

1. 選擇 **Add SAML provider** (新增 SAML 提供者)。

1. 提供提供者的名稱和描述。
**注意**  
您指定的名稱可公開存取，當使用者登入 OpenSearch Dashboards 時，該名稱會出現在下拉式選單中。確保名稱易於識別，並且不會洩露有關您身分提供者的敏感資訊。

1. 在 **Configure your IdP** (設定 IdP) 下，複製聲明消費者服務 (ACS) URL。

1. 使用剛才複製的 ACS URL 來設定身分提供者。術語和步驟因提供者而異。請咨詢供應商文件。

   例如，在 Okta 中，您可以建立「SAML 2.0 Web 應用程式」，並將 ACS URL 指定為 **Single Sign On URL** (單一登入 URL)、**Recipient URL** (收件者 URL) 和 **Destination URL** (目的地 URL)。對於 Auth0，您可以在 **Allowed Callback URLs** (允許的回呼 URL) 中加以指定。

1. 如果 IdP 有此值的欄位，請提供對象限制。對象限制是 SAML 聲明中的一個值，用於指定聲明的對象。使用 OpenSearch Serverless，您可以執行下列動作。請務必使用您自己的 AWS 帳戶 ID 取代下列程式碼範例中*的內容*：

   1. 使用預設對象限制 `:opensearch:111122223333`。

   1. （選用） 使用 設定自訂受眾限制 AWS CLI。如需詳細資訊，請參閱[建立 SAML 提供者 (AWS CLI)](#serverless-saml-creating-api)。

   對象限制欄位的名稱因提供者而異。對於 Okta，該名稱為 **Audience URI (SP Entity ID)** (對象 URI (SP 實體 ID))。對於 IAM 身分中心，該名稱為 **Application SAML audience** (應用程式 SAML 對象)。

1. 如果您使用的是 IAM 身分中心，您還需要指定下列[屬性映射](https://docs.aws.amazon.com/singlesignon/latest/userguide/attributemappingsconcept.html)：`Subject=${user:name}`，格式為 `unspecified`。

1. 設定身分提供者之後，會產生 IdP 中繼資料檔案。此 XML 檔案包含提供者的相關資訊，例如 TLS 憑證、單一登入端點以及身分提供者的實體 ID。

   複製 IdP 中繼資料檔案中的文字，並將其貼到 **Provide metadata from your IdP** (透過 IdP 提供中繼資料) 欄位下方。或者，選擇 **Import from XML file** (從 XML 檔案匯入)，然後上傳檔案。中繼資料檔案如下所示：

   ```
   <?xml version="1.0" encoding="UTF-8"?>
   <md:EntityDescriptor entityID="entity-id" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
     <md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
       <md:KeyDescriptor use="signing">
         <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
           <ds:X509Data>
             <ds:X509Certificate>tls-certificate</ds:X509Certificate>
           </ds:X509Data>
         </ds:KeyInfo>s
       </md:KeyDescriptor>
       <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
       <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
       <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="idp-sso-url"/>
       <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="idp-sso-url"/>
     </md:IDPSSODescriptor>
   </md:EntityDescriptor>
   ```

1. 將**自訂使用者 ID 屬性**欄位保持空白，以針對使用者名稱使用 SAML 聲明的 `NameID`元素。如果您的聲明不使用此標準元素，而是將使用者名稱作為自訂屬性，請在此處指定該屬性。屬性區分大小寫。僅支援單一使用者屬性。

   下列範例顯示 SAML 聲明中 `NameID` 的覆寫屬性：

   ```
   <saml2:Attribute Name="UserId" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
     <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:type="xs:string">annie</saml2:AttributeValue>
   </saml2:Attribute>
   ```

1. (選用) 在 **Group attribute** (群組屬性) 欄位中指定自訂屬性，例如 `role` 或 `group`。僅支援單一群組屬性。沒有預設的群組屬性。如果未指定群組屬性，資料存取政策只能包含使用者主體。

   下列範例顯示 SAML 聲明中的群組屬性：

   ```
   <saml2:Attribute Name="department" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
       <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:type="xs:string">finance</saml2:AttributeValue>
   </saml2:Attribute>
   ```

1. 依預設，OpenSearch Dashboards 會在 24 小時後將使用者登出。您可以指定 **OpenSearch Dashboards 逾時**，將此值設定為 1 到 12 小時 (15 到 720 分鐘） 之間的任何數字。如果您嘗試將逾時設定為等於或小於 15 分鐘，您的工作階段將重設為一小時。

1. 選擇 **Create SAML provider** (建立 SAML 提供者)。

## 存取 OpenSearch Dashboards
<a name="serverless-saml-dashboards"></a>

設定 SAML 提供者之後，與該提供者相關聯的所有使用者和群組都可以導覽至 OpenSearch Dashboards 端點。Dashboards URL 具有所有集合`collection-endpoint/_dashboards/`的格式。 **

如果您已啟用 SAML，選取 中的連結會 AWS 管理主控台 引導您前往 IdP 選擇頁面，您可以在其中使用您的 SAML 登入資料登入。首先，使用下拉式清單選取身分提供者：

![\[OpenSearch login page with dropdown menu for selecting SAML Identity Provider options.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/idpList.png)


然後使用 IdP 憑證登入。

如果您沒有啟用 SAML，選取 中的連結會 AWS 管理主控台 引導您以 IAM 使用者或角色身分登入，沒有 SAML 的選項。

## 授予 SAML 身分對集合資料的存取權
<a name="serverless-saml-policies"></a>

建立 SAML 提供者後，您仍然需要授予基礎使用者和群組對集合內資料的存取權。您可以透過[資料存取政策](serverless-data-access.md)授予存取權。在您提供使用者存取權之前，他們將無法讀取、寫入或刪除集合內的任何資料。

若要授予存取權，請建立資料存取政策，並在 `Principal` 陳述式中指定 SAML 使用者和/或群組 ID：

```
[
   {
      "Rules":[
       ...  
      ],
      "Principal":[
         "saml/987654321098/myprovider/user/Shaheen",
         "saml/987654321098/myprovider/group/finance"
      ]
   }
]
```

您可以授予對集合、索引或兩者的存取權。如果您希望不同的使用者擁有不同的許可，請建立多個規則。如需可用許可的清單，請參閱[支援的政策許可](serverless-data-access.md#serverless-data-supported-permissions)。如需有關如何格式化存取政策的資訊，請參閱[政策語法](serverless-data-access.md)。

## 建立 SAML 提供者 (AWS CLI)
<a name="serverless-saml-creating-api"></a>

若要使用 OpenSearch Serverless API 建立 SAML 提供者，請傳送 [CreateSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityConfig.html) 請求：

```
aws opensearchserverless create-security-config \
    --name myprovider \
    --type saml \
    --saml-options file://saml-auth0.json
```

將包括中繼資料 XML 在內的 `saml-options` 指定為 .json 檔案中的鍵值映射。必須將中繼資料 XML 編碼為 [JSON 逸出字串](https://www.freeformatter.com/json-escape.html)。

```
{
   "sessionTimeout": 70,
   "groupAttribute": "department",
   "userAttribute": "userid",
   "openSearchServerlessEntityId": "aws:opensearch:111122223333:app1",
   "metadata": "EntityDescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" ... ... ... IDPSSODescriptor\r\n\/EntityDescriptor"
}
```

**注意**  
（選用） 使用 設定自訂受眾限制 AWS CLI。如需詳細資訊，請參閱[建立 SAML 提供者 (AWS CLI)](#serverless-saml-creating-api)。

## 檢視 SAML 提供者
<a name="serverless-saml-viewing"></a>

下列 [ListSecurityConfigs](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListSecurityConfigs.html) 請求會列出您帳戶中的所有 SAML 提供者：

```
aws opensearchserverless list-security-configs --type saml
```

該請求會傳回所有現有 SAML 提供者的相關資訊，包括身分提供者產生的完整 IdP 中繼資料：

```
{
   "securityConfigDetails": [ 
      { 
         "configVersion": "MTY2NDA1MjY4NDQ5M18x",
         "createdDate": 1664054180858,
         "description": "Example SAML provider",
         "id": "saml/111122223333/myprovider",
         "lastModifiedDate": 1664054180858,
         "samlOptions": { 
            "groupAttribute": "department",
            "metadata": "EntityDescriptorxmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" ...... ...IDPSSODescriptor\r\n/EntityDescriptor",
            "sessionTimeout": 120,
            "openSearchServerlessEntityId": "aws:opensearch:111122223333:app1",
            "userAttribute": "userid"
         }
      }
   ]
}
```

若要檢視特定提供者的相關詳細資訊 (包括未來更新的 `configVersion`)，請傳送 `GetSecurityConfig` 請求。

## 更新 SAML 提供者
<a name="serverless-saml-updating"></a>

若要使用 OpenSearch Serverless 主控台更新 SAML 提供者，請選擇 **SAML authentication** (SAML 身分驗證)、選取身分提供者，然後選擇 **Edit** (編輯)。您可以修改所有欄位，包括中繼資料和自訂屬性。

若要透過 OpenSearch Serverless API 更新提供者，請傳送 [UpdateSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityConfig.html) 請求，並包含要更新之政策的識別符。您還必須包含組態版本，您可以使用 `ListSecurityConfigs` 或 `GetSecurityConfig` 命令擷取該版本。將最新的版本納入其中，可確保您不會意外覆寫其他人所做的變更。

下列請求會更新提供者的 SAML 選項：

```
aws opensearchserverless update-security-config \
    --id saml/123456789012/myprovider \
    --type saml \
    --saml-options file://saml-auth0.json \
    --config-version MTY2NDA1MjY4NDQ5M18x
```

將 SAML 組態選項指定為 .json 檔案中的鍵值映射。

**重要**  
**SAML 選項的更新*不是*遞增處理的**。如果您在進行更新時未指定 `SAMLOptions` 物件中的參數值，則會以空白值覆寫現有值。例如，如果目前的組態包含 `userAttribute` 的值，然後您進行更新但不包含此值，則系統會將該值從組態中移除。透過呼叫 `GetSecurityConfig` 操作進行更新之前，請確保您知道現有值為何。

## 刪除 SAML 提供者
<a name="serverless-saml-deleting"></a>

刪除 SAML 提供者時，對資料存取政策中關聯使用者和群組的任何參考將不再有效。為避免混淆，建議您先移除存取政策中對端點的所有參考，然後再刪除該端點。

若要使用 OpenSearch Serverless 主控台刪除 SAML 提供者，請選擇 **Authentication** (身分驗證)、選取提供者，然後選擇 **Delete** (刪除)。

若要透過 OpenSearch Serverless API 刪除提供者，請傳送 [DeleteSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteSecurityConfig.html) 請求：

```
aws opensearchserverless delete-security-config --id saml/123456789012/myprovider
```

# Amazon OpenSearch Serverless 的合規驗證
<a name="serverless-compliance-validation"></a>

在多個合規計畫中，第三方稽核人員會評估 Amazon OpenSearch Serverless 的安全性和 AWS 合規性。這些計劃包括 SOC、PCI 和 HIPAA。

若要了解 AWS 服務 是否在特定合規計劃範圍內，請參閱[AWS 服務 合規計劃範圍內](https://aws.amazon.com/compliance/services-in-scope/)然後選擇您感興趣的合規計劃。如需一般資訊，請參閱[AWS 合規計劃](https://aws.amazon.com/compliance/programs/)。

您可以使用 下載第三方稽核報告 AWS Artifact。如需詳細資訊，請參閱[下載報告 in AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)

您使用 時的合規責任 AWS 服務 取決於資料的機密性、您公司的合規目標，以及適用的法律和法規。如需使用 時合規責任的詳細資訊 AWS 服務，請參閱 [AWS 安全文件](https://docs.aws.amazon.com/security/)。