

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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/ko_kr/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에 대한 Identity and Access Management](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)를 포함해야 합니다. 예를 들어 다음 정책은 이름이 “log”로 시작하는 모든 컬렉션에 적용됩니다.

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


암호화 정책은 특히 프로그래밍 방식으로 컬렉션을 생성하고 관리하는 프로세스를 간소화합니다. 이름을 지정하면 컬렉션을 생성할 수 있으며 생성 시 암호화 키가 자동으로 할당됩니다.

## 네트워크 정책
<a name="serverless-security-network"></a>

[네트워크 정책](serverless-network.md)은 컬렉션에 프라이빗하게 액세스할 수 있는지 아니면 퍼블릭 네트워크에서 인터넷을 통해 액세스할 수 있는지 정의합니다. 프라이빗 컬렉션은 OpenSearch Serverless 관리형 VPC 엔드포인트 또는 **AWS 서비스 프라이빗 액세스를 사용하는 Amazon Bedrock과 같은 특정 AWS 서비스 를 통해 액세스할 수 있습니다. 암호화 정책과 마찬가지로 네트워크 정책도 여러 컬렉션에 적용할 수 있으므로 여러 컬렉션에 대한 네트워크 액세스를 대규모로 관리할 수 있습니다.

네트워크 정책은 **액세스 유형**과 **리소스 유형**이라는 두 가지 구성 요소로 구성됩니다. 액세스 유형은 퍼블릭 또는 프라이빗 액세스일 수 있습니다. 리소스 유형에 따라 선택한 액세스가 컬렉션 엔드포인트, OpenSearch Dashboards 엔드포인트 또는 둘 다에 적용되는지가 결정됩니다.

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


네트워크 정책 내에서 VPC 액세스를 구성하려는 경우 먼저 하나 이상의 [OpenSearch Serverless 관리형 VPC 엔드포인트](serverless-vpc.md)를 생성해야 합니다. 이러한 엔드포인트를 사용하면 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 Direct Connect 연결을 사용하지 않고 VPC에 있는 것처럼 OpenSearch Serverless에 액세스할 수 있습니다.

에 대한 프라이빗 액세스는 컬렉션의 OpenSearch 엔드포인트에만 적용할 AWS 서비스 수 있으며 OpenSearch Dashboards 엔드포인트에는 적용할 수 없습니다. OpenSearch Dashboards에 대한 액세스 권한은 부여할 수 AWS 서비스 없습니다.

## 데이터 액세스 정책
<a name="serverless-security-data-access"></a>

[데이터 액세스 정책](serverless-data-access.md)은 사용자가 컬렉션 내 데이터에 액세스하는 방법을 정의합니다. 데이터 액세스 정책을 사용하면 특정 패턴과 일치하는 컬렉션 및 인덱스에 액세스 권한을 자동으로 할당하여 컬렉션을 대규모로 관리하는 데 도움이 됩니다. 단일 리소스에 여러 정책을 적용할 수 있습니다.

데이터 액세스 정책은 일련의 규칙으로 구성되며, 각 규칙에는 **리소스 유형**, **부여된 리소스**, **권한** 세트의 세 가지 구성 요소가 있습니다. 리소스 유형은 컬렉션 또는 인덱스일 수 있습니다. 부여된 리소스는 컬렉션/인덱스 이름 또는 와일드카드(\$1)가 있는 패턴일 수 있습니다. 권한 목록은 정책에서 액세스 권한을 부여하는 [OpenSearch API 작업](serverless-genref.md#serverless-operations)을 지정합니다. 또한 정책에는 액세스 권한을 부여할 IAM 역할, 사용자 및 SAML ID를 지정하는 **보안 주체** 목록이 포함되어 있습니다.

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


데이터 액세스 정책의 형식에 대한 자세한 내용은 [정책 구문](serverless-data-access.md#serverless-data-access-syntax)을 참조하세요.

데이터 액세스 정책을 생성하기 전에 정책에서 액세스를 제공할 하나 이상의 IAM 역할 또는 사용자나 SAML ID가 있어야 합니다. 자세한 내용은 다음 섹션을 참조하세요.

**참고**  
컬렉션에 대한 퍼블릭 액세스에서 프라이빗 액세스로 전환하면 OpenSearch Serverless 컬렉션 콘솔에서 인덱스 탭이 제거됩니다.

## IAM 및 SAML 인증
<a name="serverless-security-authentication"></a>

 IAM 보안 주체 및 SAML 자격 증명은 데이터 액세스 정책의 구성 요소 중 하나입니다. 액세스 정책의 `principal` 설명에 IAM 역할, 사용자 및 SAML ID를 포함할 수 있습니다. 그러면 해당 보안 주체에게 관련 정책 규칙에 지정한 권한이 부여됩니다.

```
[
   {
      "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에 액세스합니다. 클라이언트가 TLS(전송 계층 보안)를 지원해야 합니다. TLS 1.2는 필수이며 TLS 1.3을 권장합니다. TLS 1.3에 대해 지원되는 암호 목록은 Elastic Load Balancing 설명서의 [TLS protocols and ciphers](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 Management Console. 를 사용하는 것과 동일한 단계는 단원을 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에 대한 Identity and Access Management](security-iam-serverless.md) 섹션을 참조하세요.

## 2단계: 암호화 정책 생성
<a name="gsg-encryption"></a>

[암호화 정책](serverless-encryption.md)은 OpenSearch Serverless가 컬렉션을 암호화하는 데 사용할 AWS KMS 키를 지정합니다. AWS 관리형 키 또는 다른 키로 컬렉션을 암호화할 수 있습니다. 이 자습서에서는 간소화를 위해 컬렉션을 AWS 관리형 키로 암호화합니다.

**암호화 정책 생성하기**

1. [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*`)를 포함하여 정책이 “books”(책)라는 단어로 시작하는 모든 컬렉션에 적용되도록 할 수 있습니다.

1. **암호화의** 경우 ** AWS 소유 키 사용을** 선택한 상태로 둡니다.

1. **생성(Create)**을 선택합니다.

## 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. 이 자습서에서는 간소화를 위해 **books(책) 컬렉션에 대한 공개 액세스를 구성해 보겠습니다. 액세스 유형으로 **Public**(퍼블릭)을 선택합니다.

1. OpenSearch Dashboards에서 컬렉션에 액세스할 것입니다. 이렇게 하려면 Dashboards **및 OpenSearch 엔드포인트에 대한 네트워크 액세스를 구성해야 합니다. 그러지 않으면 Dashboards가 작동하지 않습니다.

   리소스 유형의 경우 **Access to OpenSearch endpoints**(OpenSearch 엔드포인트에 대한 액세스)와 **Access to OpenSearch Dashboards**(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/ko_kr/opensearch-service/latest/developerguide/images/serverless-tutorial-network.png)

1. **생성(Create)**을 선택합니다.

## 4단계: 데이터 액세스 정책 생성
<a name="gsg-data-access"></a>

데이터 액세스를 구성할 때까지는 컬렉션 데이터에 액세스할 수 없습니다. [데이터 액세스 정책](serverless-data-access.md)은 1단계에서 구성한 IAM 자격 증명 기반 정책과는 별개입니다. 이를 통해 사용자는 컬렉션 내의 실제 데이터에 액세스할 수 있습니다.

이 자습서에서는 단일 사용자에게 **books(책) 컬렉션의 데이터를 인덱싱하는 데 필요한 권한을 제공합니다.

**데이터 액세스 정책 생성하기**

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"
         ]
      }
   ]
   ```

   이 정책은 단일 사용자에게 **books(책) 컬렉션에서 인덱스를 생성하고, 일부 데이터를 인덱싱하고, 검색하는 데 필요한 최소 권한을 제공합니다.

1. **생성(Create)**을 선택합니다.

## 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**(제출)을 선택합니다. 컬렉션을 초기화하는 데 보통 1분도 채 걸리지 않습니다.

## 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/ko_kr/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) 설명된 단계를 안내하지만 OpenSearch Service 콘솔 AWS CLI 대신를 사용합니다.

이 튜토리얼에서는 다음 단계를 완료합니다.

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. 컬렉션에서 데이터를 인덱싱하고 검색할 IAM 역할에 `TutorialPolicy`를 연결합니다. 사용자 이름을 `TutorialRole`로 지정하겠습니다.

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

1. 컬렉션을 생성하기 전에 이후 단계에서 생성하게 될 **books(책) 컬렉션에 AWS 소유 키 를 할당하는 [암호화 정책](serverless-encryption.md)을 생성해야 합니다.

   **books(책) 컬렉션에 대한 암호화 정책을 생성하려면 다음 요청을 보냅니다.

   ```
   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. **books(책) 컬렉션에 대한 퍼블릭 액세스를 제공하는 [네트워크 정책](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. **books(책) 컬렉션 생성:

   ```
   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. **books(책) 컬렉션에서 데이터를 인덱싱하고 검색할 수 있는 최소 권한을 제공하는 [데이터 액세스 정책](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(책) 컬렉션에 데이터를 인덱싱합니다. *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에 대한 Identity and Access Management
<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>

**ID 기반 정책 지원:** 예

ID 기반 정책은 IAM 사용자, 사용자 그룹 또는 역할과 같은 ID에 연결할 수 있는 JSON 권한 정책 문서입니다. 이러한 정책은 사용자 및 역할이 어떤 리소스와 어떤 조건에서 어떤 작업을 수행할 수 있는지를 제어합니다. 자격 증명 기반 정책을 생성하는 방법을 알아보려면 *IAM 사용 설명서*에서 [고객 관리형 정책으로 사용자 지정 IAM 권한 정의](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)를 참조하세요.

IAM ID 기반 정책을 사용하면 허용되거나 거부되는 작업과 리소스뿐 아니라 작업이 허용되거나 거부되는 조건을 지정할 수 있습니다. 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 리소스 이름(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` 요소는 정의된 기준에 따라 문이 실행되는 시기를 지정합니다. 같음(equals) 또는 미만(less than)과 같은 [조건 연산자](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 조건 키 목록을 보려면 **서비스 승인 참조의 [Amazon OpenSearch Serverless에 대한 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html#amazonopensearchserverless-policy-keys)를 참조하세요. 조건 키를 사용할 수 있는 작업과 리소스에 대해 알아보려면 [Amazon OpenSearch Serverless에서 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html#amazonopensearchserverless-actions-as-permissions)을 참조하세요.

## 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)에 태그 정보를 제공합니다.

서비스가 모든 리소스 유형에 대해 세 가지 조건 키를 모두 지원하는 경우, 값은 서비스에 대해 **예**입니다. 서비스가 일부 리소스 유형에 대해서만 세 가지 조건 키를 모두 지원하는 경우, 값은 **부분적**입니다.

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는의 조직 또는 조직 단위(OU)에 대한 최대 권한을 지정하는 JSON 정책입니다 AWS Organizations. AWS Organizations 는 기업이 소유한 여러 AWS 계정을 그룹화하고 중앙에서 관리하기 위한 서비스입니다. 조직에서 모든 기능을 활성화할 경우, 서비스 제어 정책(SCP)을 임의의 또는 모든 계정에 적용할 수 있습니다. SCP는 각 계정 루트 사용자를 포함하여 멤버 AWS 계정의 엔터티에 대한 권한을 제한합니다. 조직 및 SCP에 대한 자세한 내용은 *AWS Organizations 사용 설명서*에서 [Service control policies](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)을 참조하세요.
+ **리소스 제어 정책(RCP)** - RCP는 소유한 각 리소스에 연결된 IAM 정책을 업데이트하지 않고 계정의 리소스에 대해 사용 가능한 최대 권한을 설정하는 데 사용할 수 있는 JSON 정책입니다. RCP는 멤버 계정의 리소스에 대한 권한을 제한하며 조직에 속하는지 여부에 관계없이 AWS 계정 루트 사용자를 포함한 ID에 대한 유효 권한에 영향을 줄 수 있습니다. RCP를 지원하는 AWS 서비스 목록을 포함하여 조직 및 RCPs에 대한 자세한 내용은 *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 ID 기반 정책을 생성하는 방법을 알아보려면 *IAM 사용 설명서*의 [IAM 정책 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)을 참조하세요.

각 리소스 유형에 대한 ARN의 형식을 포함하여 Amazon OpenSearch Serverless에서 정의한 작업 및 리소스 유형에 대한 자세한 내용은 **서비스 승인 참조의 [Amazon OpenSearch Serverless에 대한 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html)를 참조하세요.

**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 계정에 비용이 발생할 수 있습니다. ID 기반 정책을 생성하거나 편집할 때는 다음 지침과 권장 사항을 따르세요.

ID 기반 정책에 따라 계정에서 사용자가 OpenSearch Serverless 리소스를 생성, 액세스 또는 삭제할 수 있는지 여부가 결정됩니다. 이 작업으로 인해 AWS 계정에 비용이 발생할 수 있습니다. ID 기반 정책을 생성하거나 편집할 때는 다음 지침과 권장 사항을 따르세요.
+ ** 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 Access Analyzer는 100개 이상의 정책 확인 항목과 실행 가능한 추천을 제공하여 안전하고 기능적인 정책을 작성하도록 돕습니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM Access Analyzer에서 정책 검증](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)을 참조하세요.
+ **다중 인증(MFA) 필요 -**에서 IAM 사용자 또는 루트 사용자가 필요한 시나리오가 있는 경우 추가 보안을 위해 MFA를 AWS 계정켭니다. 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 리소스에 대한 세부 정보를 나열하고 볼 수 있도록 허용해야 합니다. 최소 필수 권한보다 더 제한적인 ID 기반 정책을 생성하면 콘솔이 해당 정책이 있는 개체(예: 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 데이터 영역 API와 OpenSearch Dashboards에 액세스하려면 수집 리소스에 대한 두 개의 IAM 권한을 추가해야 합니다. 이러한 권한은 `aoss:APIAccessAll` 및 `aoss:DashboardsAccessAll`입니다.

**참고**  
2023년 5월 10일부터 OpenSearch Serverless는 수집 리소스에 대해 이 두 가지 새로운 IAM 권한을 요구합니다. `aoss:APIAccessAll` 권한은 데이터 영역 액세스를 허용하고, `aoss:DashboardsAccessAll` 권한은 브라우저에서 OpenSearch Dashboards를 허용합니다. 두 개의 새 IAM 권한을 추가하지 않으면 403 오류가 발생합니다.

이 예시 정책을 통해 사용자는 계정의 지정된 컬렉션에 대한 데이터 영역 API에 액세스하고 계정의 모든 컬렉션에 대한 OpenSearch 대시보드에 액세스할 수 있습니다.

------
#### [ 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 권한을 부여하는 반면, 대시보드 권한은 OpenSearch 대시보드 액세스 권한도 제공합니다. 각 권한은 독립적으로 작동하므로 `aoss:APIAccessAll`에서 명시적으로 거부해도 Dev Tools를 포함한 리소스에 대한 `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>

ID 기반 정책은 태그를 사용하여 Amazon OpenSearch Serverless 데이터 플레인 API에 대한 액세스를 제어할 수 있게 합니다. 다음은 컬렉션에 `team:devops` 태그가 있는 경우 연결된 위탁자가 데이터 플레인 API에 액세스하도록 허용하는 정책의 예입니다.

------
#### [ 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` 태그가 있는 경우 연결된 위탁자의 데이터 플레인 API 및 Dashboards 액세스를 거부하는 정책의 예입니다.

------
#### [ 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는 데이터 플레인 API의 `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 Center 신뢰 공급자를 삭제합니다.

다음 자격 증명 기반 액세스 정책을 사용하여 모든 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는 2개의 공급자 인스턴스를 제공합니다. 그중 하나는 조직 계정용이고 다른 하나는 멤버 계정용입니다. 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 키가 자동으로 컬렉션에 할당됩니다.

컬렉션을 생성할 때 보안 정책을 통해 또는 `CreateCollection` 요청에서 직접 두 가지 방법으로 AWS KMS 키를 지정할 수 있습니다. `CreateCollection` 요청의 일부로 AWS KMS 키를 제공하는 경우 일치하는 보안 정책보다 우선합니다. 이 접근 방식을 사용하면 필요할 때 특정 컬렉션에 대한 정책 기반 암호화 설정을 유연하게 재정의할 수 있습니다.

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


암호화 정책에는 다음 요소가 포함됩니다.
+ `Rules` – 각각 다음과 같은 하위 요소가 포함된 하나 이상의 컬렉션 일치 규칙:
  + `ResourceType` – 현재 유일한 옵션은 “컬렉션”입니다. 암호화 정책은 컬렉션 리소스에만 적용됩니다.
  + `Resource` – `collection/<collection name|pattern>` 형식으로 정책이 적용될 하나 이상의 컬렉션 이름 또는 패턴입니다.
+ `AWSOwnedKey` – AWS 소유 키를 사용할지 여부.
+ `KmsARN` – `AWSOwnedKey`를 false로 설정한 경우 연결된 컬렉션을 암호화할 KMS 키의 Amazon 리소스 이름(ARN)을 지정합니다. 이 파라미터를 포함하면 OpenSearch Serverless는 `AWSOwnedKey` 파라미터를 무시합니다.

다음 샘플 정책은 `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"
}
```

정책이 컬렉션 이름과 일치하더라도 리소스 패턴에 와일드카드(\$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` – 암호화 정책을 삭제합니다.

다음 샘플 ID 기반 액세스 정책은 사용자가 `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는 Auto Scaling 및 소프트웨어 업데이트와 같은 유지 관리 작업 중에 `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 키로 전송하여 객체를 암호화하는 데 사용할 데이터 키를 생성합니다.
+ 데이터 암호화 AWS KMS 에 사용할 수 있도록에 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 요청을 전송하여 암호화된 데이터 키를 복호화합니다.

언제든지 권한 부여에 대한 액세스 권한을 취소하거나 고객 관리형 키에 대한 서비스 액세스를 제거할 수 있습니다. 그렇게 하면 OpenSearch Serverless는 고객 관리형 키로 암호화된 데이터에 액세스할 수 없으며, 이는 해당 데이터에 의존하는 모든 작업에 영향을 미치고 비동기식 워크플로에서 `AccessDeniedException` 오류 및 실패로 이어집니다.

OpenSearch Serverless는 지정된 고객 관리형 키가 보안 정책 또는 컬렉션과 연결되지 않은 경우 비동기 워크플로에서 권한을 사용 중지합니다.

### 암호화 정책 생성(콘솔)
<a name="serverless-encryption-console"></a>

암호화 정책에서 정책이 적용될 KMS 키와 일련의 수집 패턴을 지정합니다. 정책에 정의된 패턴 중 하나와 일치하는 모든 새 컬렉션에는 컬렉션을 생성할 때 해당 KMS 키가 할당됩니다. 컬렉션을 생성하기 **전에 암호화 정책을 생성하는 것이 좋습니다.

**OpenSearch Serverless 암호화 정책 생성하기**

1. [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. **생성(Create)**을 선택합니다.

#### 다음 단계: 컬렉션 생성
<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` 파일은 이름이 `sales`로 시작하는 모든 컬렉션뿐만 아니라 이름이 `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"
}
```

서비스 소유 키를 사용하려면 `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 내에서 컬렉션의 모든 경로는 업계 표준 AES-256 암호가 적용된 전송 계층 보안 1.2(TLS)를 사용하여 전송 중에 암호화됩니다. TLS 1.2를 통해서도 Opensearch의 모든 API와 Dashboards에 액세스할 수 있습니다. TLS는 네트워크를 통해 교환되는 정보를 암호화하는 데 사용되는 업계 표준 암호화 프로토콜 세트입니다.

# Amazon OpenSearch Serverless에 대한 네트워크 액세스
<a name="serverless-network"></a>

Amazon OpenSearch Serverless 컬렉션에 대한 네트워크 설정에 따라 퍼블릭 네트워크에서 인터넷을 통해 컬렉션에 액세스할 수 있는지 또는 프라이빗 액세스로 액세스해야 하는지 여부가 결정됩니다.

프라이빗 액세스는 다음 중 하나 또는 둘 다에 적용될 수 있습니다.
+ OpenSearch Serverless 관리형 VPC 엔드포인트
+ Amazon Bedrock AWS 서비스 과 같이 지원됨

컬렉션의 **OpenSearch 엔드포인트 및 해당 **OpenSearch Dashboards 엔드포인트에 대해 네트워크 액세스를 개별적으로 구성할 수 있습니다.

네트워크 액세스는 다양한 소스 네트워크에서 액세스를 허용하기 위한 격리 메커니즘입니다. 예를 들어 컬렉션의 OpenSearch 대시보드 엔드포인트에 퍼블릭 액세스로 액세스할 수 있지만 OpenSearch API 엔드포인트에는 액세스할 수 없는 경우, 사용자는 퍼블릭 네트워크에서 연결할 때 대시보드를 통해서만 컬렉션 데이터에 액세스할 수 있습니다. 퍼블릭 네트워크에서 직접 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 대시보드 엔드포인트)으로 구성됩니다. 각 리소스 유형(`collection` 및 `dashboard`)에 대해 정책을 적용할 컬렉션을 정의하는 일련의 규칙을 지정합니다.

이 샘플 정책에서 첫 번째 규칙은 `marketing*` 용어로 시작하는 모든 컬렉션에서 컬렉션 엔드포인트와 대시보드 엔드포인트 모두에 대한 VPC 엔드포인트 액세스를 지정합니다. 또한 Amazon Bedrock 액세스를 지정합니다.

**참고**  
Amazon Bedrock AWS 서비스 과 같은에 대한 프라이빗 액세스는 컬렉션의 OpenSearch 엔드포인트*에만* 적용되며 OpenSearch Dashboards 엔드포인트에는 적용되지 않습니다. `ResourceType`가 인 경우에도 OpenSearch Dashboards에 대한 액세스 권한을 부여받을 수 `dashboard` AWS 서비스 없습니다.

두 번째 규칙은 `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
   }
]
```

이 정책은 “finance”(재무)로 시작하는 컬렉션에 대한 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)를 하나 이상 생성해야 합니다.
+ 에 대한 프라이빗 액세스는 컬렉션의 OpenSearch 엔드포인트 AWS 서비스 에만 적용되며 OpenSearch Dashboards 엔드포인트에는 적용되지 않습니다. `ResourceType`가 인 경우에도 OpenSearch Dashboards에 대한 액세스 권한을 부여받을 수 `dashboard` AWS 서비스 없습니다.
+ 퍼블릭 네트워크에서 컬렉션에 액세스할 수 있는 경우 모든 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 액세스를 지정하고 다른 규칙은 퍼블릭 액세스를 지정합니다. 이 상황에서 퍼블릭 액세스는 **finance(재무) 컬렉션에 대해서만 VPC 액세스를 재정의하므로(두 규칙 모두에 존재하기 때문에) 퍼블릭 네트워크에서 finance(재무) 컬렉션에 액세스할 수 있습니다. sales 컬렉션은 지정된 엔드포인트에서 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://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/ko_kr/opensearch-service/latest/developerguide/serverless-network.html)

   선택한 각 리소스 유형에 대해 기존 컬렉션을 선택하여 정책 설정을 적용하거나 하나 이상의 리소스 패턴을 생성할 수 있습니다. 리소스 패턴은 접두사와 와일드카드(\$1)로 구성되며 정책 설정이 적용될 컬렉션을 정의합니다.

   예를 들어 `Marketing*`이라는 패턴을 포함하는 경우 이름이 “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

다음 샘플 네트워크 정책은 접두사 `log*`로 시작하는 컬렉션에만 컬렉션 엔드포인트(VPC 액세스 및 Amazon Bedrock)에 대한 프라이빗 액세스 권한에 제공합니다. 인증된 사용자는 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` 요소 내용에서 정책 정보를 찾으십시오. 이 `name` 및 `type`를 기록하고 [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 Verified·Access 사용 설명서*의 [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 리전 에서는 표준 및 FIPS 호환 엔드포인트를 통해 OpenSearch Serverless 컬렉션에 액세스할 수 있습니다. 자세한 내용은 *AWS Verified·Access 사용 설명서*의 [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**.

마찬가지로, 표준 및 FIPS 준수 엔드포인트를 통해 OpenSearch Dashboards에 액세스할 수 있습니다.
+ **표준 Dashboards 엔드포인트** - **https://*collection\$1id*.*AWS 리전*.aoss.amazonaws.com/\$1dashboards**.
+ **FIPS 준수 Dashboards 엔드포인트** - **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) 엔드포인트와 원활하게 통신하려면 OpenSearch Serverless에 액세스해야 하는 VPC의 리소스에서 인바운드 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 작업에 엔드포인트를 사용하려면 [OpenSearch Serverless에서 FIPS 엔드포인트 사용](#using-fips-endpoints-opensearch-serverless) 섹션에서 설명하는 대로 리전 FIPS 엔드포인트를 사용하도록 SDK를 구성합니다. OpenSearch Dashboards 액세스의 경우 VPC 내에서 액세스할 때 FIPS 준수 VPC 엔드포인트를 통해 자동으로 라우팅되는 컬렉션별 Dashboards URL을 사용합니다. 자세한 내용은 [Amazon OpenSearch Service와 함께 OpenSearch Dashboards 사용](dashboards.md) 단원을 참조하십시오.

## FIPS 규정 준수 검증
<a name="verifying-fips-compliance"></a>

OpenSearch Serverless에 대한 연결이 FIPS 준수 암호화를 사용하고 있는지 확인하려면 AWS CloudTrail 을 사용하여 OpenSearch Serverless에 대한 API 직접 호출을 모니터링합니다. API 직접 호출에 대해 CloudTrail 로그의 `eventSource` 필드에 `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. **연결된 VPC** 정보를 복사합니다. 예를 들어 `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. **연결된 VPC**에 비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. 네트워크 ACL이 리소스와 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 ID](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 권한은 `CreateCollection` 및 `ListAccessPolicies`와 같은 [서버리스 API 작업](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/Welcome.html)에 대한 액세스를 제어합니다. 데이터 액세스 정책은 OpenSearch Serverless가 지원하는 [OpenSearch 작업](#serverless-data-supported-permissions)(예: `PUT <index>` 또는 `GET _cat/indices`)에 대한 액세스를 제어합니다.

`aoss:CreateAccessPolicy` 및 `aoss:GetAccessPolicy`(다음 섹션에서 설명)와 같은 데이터 액세스 정책 API 작업에 대한 액세스를 제어하는 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`에 대한 액세스 권한을 부여해야 합니다. 두 권한 모두 컬렉션 리소스에 대한 전체 액세스 권한을 부여하는 반면, 대시보드 권한은 OpenSearch 대시보드 액세스 권한도 제공합니다. 보안 주체에게 이 두 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>

데이터 액세스 정책에는 규칙 세트가 포함되어 있으며 각 규칙에는 다음 요소가 포함되어 있습니다.


| 요소 | 설명 | 
| --- | --- | 
| ResourceType | 권한이 적용되는 리소스 유형(컬렉션 또는 인덱스)입니다. 별칭 및 템플릿 권한은 컬렉션 수준에 있고 데이터 생성, 수정, 검색 권한은 인덱스 수준에 있습니다. 자세한 내용은 [지원되는 정책 권한](#serverless-data-supported-permissions)을 참조하세요. | 
| Resource | 리소스 이름 및/또는 패턴 목록. 패턴은 와일드카드(\$1)가 뒤따르는 접두사로 연결된 권한을 여러 리소스에 적용할 수 있도록 합니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/serverless-data-access.html) | 
| Permission | 지정된 리소스에 대해 부여할 권한 목록입니다. 권한 및 허용되는 API 작업의 전체 목록은 [지원되는 OpenSearch API 작업 및 권한](serverless-genref.md#serverless-operations) 섹션을 참조하세요. | 
| Principal | 액세스 권한을 부여할 하나 이상의 보안 주체 목록입니다. 보안 주체는 IAM 역할 ARN 또는 SAML ID일 수 있습니다. 이러한 보안 주체는 현재 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는 데이터를 추가하기 전에 Dashboards를 탐색하는 데 도움이 되는 시각화, 대시보드 및 기타 도구와 더불어 [샘플 데이터 세트를](https://opensearch.org/docs/latest/dashboards/quickstart-dashboards/#adding-sample-data) 제공합니다. 이 샘플 데이터로 인덱스를 만들려면 작업하려는 데이터 세트에 권한을 부여하는 데이터 액세스 정책이 필요합니다. 다음 정책은 와일드카드(`*`)를 사용하여 세 샘플 데이터 세트 모두에 권한을 부여합니다.

```
[
  {
    "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://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) Amazon OpenSearch Service 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **서버리스**를 확장하고 **보안**에서 **데이터 액세스 정책**을 선택합니다.

1. **Create access policy**(액세스 정책 생성)를 선택합니다.

1. 정책의 이름 및 설명을 입력합니다.

1. 정책의 첫 번째 규칙 이름을 입력합니다. 예: “로그 컬렉션 액세스”.

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. **생성(Create)**을 선택합니다. 정책을 만든 시점과 권한이 적용된 시점 사이에 약 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` 요소 내용에서 정책 정보를 찾으십시오. 이 정책의 `name` 및 `type`를 기록하고 [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-b`에서 액세스해야 하는 컬렉션을 `account-a`에서 소유한 경우 `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).

 AWS PrivateLink 를 사용하여 VPC와 Amazon OpenSearch Serverless 간에 프라이빗 연결을 생성할 수 있습니다. 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 Direct Connect 연결을 사용하지 않고 VPC에 있는 것처럼 OpenSearch Serverless에 액세스할 수 있습니다. VPC의 인스턴스는 OpenSearch Serverless에 액세스하기 위해 퍼블릭 IP 주소가 필요하지 않습니다. 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)
+ [VPC 및 네트워크 액세스 정책](#vpc-endpoint-network)
+ [VPC 및 엔드포인트 정책](#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 리전에 있는 모든 컬렉션과 Dashboards에 액세스할 수 있습니다. OpenSearch Serverless용 엔드포인트가 있는 모든 VPC에는 자체 프라이빗 호스팅 영역이 연결되어 있습니다.

OpenSearch Serverless 인터페이스 엔드포인트는 리전의 모든 컬렉션에 대한 퍼블릭 Route 53 와일드카드 DNS 레코드도 생성합니다. DNS 이름은 OpenSearch Serverless 퍼블릭 IP 주소로 확인됩니다. OpenSearch Serverless VPC 엔드포인트가 없는 VPC의 클라이언트 또는 공용 네트워크의 클라이언트는 퍼블릭 Route 53 해석기를 사용하고 해당 IP 주소로 컬렉션 및 Dashboards에 액세스할 수 있습니다. VPC 엔드포인트의 IP 주소 유형(IPv4, IPv6 또는 듀얼 스택)은 [ OpenSearch Serverless에 대한 인터페이스 엔드포인트를 생성할](#serverless-vpc-create) 때 제공된 서브넷을 기반으로 결정됩니다.

**참고**  
OpenSearch Serverless는 OpenSearch Service 도메인 확인을 위해 추가 Amazon Route 53 프라이빗 호스팅 영역(``<region>.opensearch.amazonaws.com``)을 생성합니다. AWS CLI의 [update-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/update-vpc-endpoint.html) 명령을 사용하여 기존 IPv4 VPC 엔드포인트를 이중 스택으로 업데이트할 수 있습니다.

특정 VPC의 DNS 해석기 주소는 VPC CIDR의 두 번째 IP 주소입니다. VPC의 모든 클라이언트는 해당 해석기를 사용하여 모든 컬렉션의 VPC 엔드포인트 주소를 가져와야 합니다. 해석기는 OpenSearch Serverless에서 만든 프라이빗 호스팅 영역을 사용합니다. 어떤 계정에서든 모든 컬렉션에 이 해석기를 사용하면 충분합니다. 일반적으로 필요하지는 않지만 일부 컬렉션 엔드포인트에는 VPC 해석기를 사용하고 다른 콜렉션 엔드포인트에는 퍼블릭 해석기를 사용할 수도 있습니다.

## VPC 및 네트워크 액세스 정책
<a name="vpc-endpoint-network"></a>

컬렉션의 OpenSearch API 및 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 엔드포인트를 서비스에 대한 액세스 포인트로, 네트워크 액세스 정책을 컬렉션 및 Dashboards에 대한 네트워크 수준의 액세스 포인트로, 데이터 액세스 정책을 컬렉션의 데이터에 대한 모든 작업에 대해 세밀한 액세스 제어를 위한 액세스 포인트로 생각하세요.

네트워크 정책에서 여러 VPC 엔드포인트 ID를 지정할 수 있으므로 컬렉션에 액세스해야 하는 모든 VPC에 대해 VPC 엔드포인트를 만드는 것이 좋습니다. 이러한 VPCs OpenSearch Serverless 컬렉션 및 네트워크 정책을 소유한 AWS 계정과 다른 계정에 속할 수 있습니다. 한 계정의 VPC-to-VPC 피어링 또는 기타 프록시 솔루션을 생성하지 않는 것이 좋습니다. 이는 자체 엔드포인트가 있는 각 VPC보다 보안 및 비용 효율성이 떨어집니다. 네트워크 정책에서 해당 VPC의 엔드포인트에 대한 액세스를 설정한 다른 VPC의 관리자는 첫 번째 VPC를 쉽게 볼 수 없습니다.

## VPC 및 엔드포인트 정책
<a name="vpc-endpoint-policy"></a>

 Amazon OpenSearch Serverless는 VPC에 대한 엔드포인트 정책을 지원하지 않습니다. 엔드포인트 정책은 VPC 엔드포인트에 연결하여 엔드포인트를 사용하여 AWS 서비스에 액세스할 수 있는 보안 주체를 제어하는 AWS IAM 리소스 기반 정책입니다. 자세한 정보는 [엔드포인트 정책을 사용하여 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": "*"
        }
    ]
}
```

------

OpenSearch Serverless 컬렉션을 VPC 엔드포인트 정책에 조건부 요소로 포함하도록 지정할 수 있습니다. 이렇게 하려면 다음 예제를 참조하세요.

------
#### [ 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에서 Amazon 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 서버리스에 대한 트래픽을 제어할 수 있습니다.
+ 단일 에는 최대 50개의 OpenSearch Serverless VPC 엔드포인트가 있을 AWS 계정 수 있습니다.
+ 네트워크 정책에서 컬렉션의 API 또는 대시보드에 대한 퍼블릭 인터넷 액세스를 활성화하면 모든 VPC와 퍼블릭 인터넷에서 컬렉션에 액세스할 수 있습니다.
+ 온프레미스로 VPC 외부에 있는 경우 OpenSearch Serverless VPC 엔드포인트 확인에 DNS 해석기를 직접 사용할 수 없습니다. VPN 액세스가 필요한 경우 VPC에 외부 클라이언트가 사용할 DNS 프록시 해석기가 필요합니다. Route 53은 온프레미스 네트워크나 다른 VPC에서 사용자의 VPC로 DNS 쿼리를 보낼 때 사용할 수 있는 인바운드 엔드포인트 옵션을 제공합니다.
+ 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 엔드포인트를 삭제합니다.

또한 VPC 엔드포인트를 생성하려면 다음과 같은 Amazon EC2 및 Route 53 권한이 필요합니다.
+ `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://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. **Subnets**(서브넷)의 경우 OpenSearch Serverless에 액세스할 하나의 서브넷을 선택합니다.
   + 엔드포인트의 IP 주소 및 DNS 유형이 서브넷 유형을 기반으로 하는 경우
     + 이중 스택: 모든 서브넷에 IPv4 및 IPv6 주소 범위가 모두 있는 경우
     + IPv6: 모든 서브넷이 IPv6 전용 서브넷인 경우
     + IPv4: 모든 서브넷이 IPv4 주소 범위를 포함하는 경우

1. **보안 그룹**에서 엔드포인트 네트워크 인터페이스에 연결할 보안 그룹을 선택합니다. 이는 엔드포인트에 권한을 부여하는 인바운드 트래픽의 포트, 프로토콜 및 소스를 제한하는 중요한 단계입니다. 보안 그룹 규칙이 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)를 사용하여 조직의 다른와 VPC 서브넷을 공유하고 여러 AWS 계정 의 리소스 간에 VPN과 같은 네트워킹 인프라를 공유할 수 있습니다 AWS 계정.

현재 Amazon OpenSearch Serverless는 사용자가 해당 VPC의 소유자가 아닌 한 공유 VPC에 AWS PrivateLink 대한 연결 생성을 지원하지 않습니다.는 간의 연결 공유 AWS PrivateLink 도 지원하지 않습니다 AWS 계정.

하지만 OpenSearch Serverless의 유연한 모듈식 아키텍처를 기반으로 공유 VPC를 설정할 수 있습니다. 이는 OpenSearch Serverless 네트워킹 인프라가 개별 컬렉션(OpenSearch Service) 인프라와 분리되어 있기 때문에 가능합니다. 따라서 VPC가 위치한 한 계정에 대해 AWS PrivateLink VPCe 엔드포인트를 생성한 다음, 다른 계정의 네트워크 정책에서 VPCe ID를 사용하여 해당 공유 VPC에서 오는 트래픽만 수신하도록 제한할 수 있습니다.

다음 절차에서는 *소유자 계정*과 *소비자 계정*을 사용합니다.

소유자 계정은 VPC를 설정하고 다른 계정과 공유하는 공통 네트워킹 계정 역할을 합니다. 소비자 계정은 소유자 계정에서 공유한 VPC에서 OpenSearch Serverless 컬렉션을 생성하고 유지 관리하는 계정입니다.

**사전 조건**  
공유 VPC를 설정하기 전에 다음 요구 사항이 충족되는지 확인합니다.
+ 의도한 소유자 계정은 Amazon 가상 프라이빗 클라우드에서 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. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) Amazon OpenSearch Service 콘솔에 로그인합니다.

1. [OpenSearch Serverless용 인터페이스 엔드포인트 생성](#serverless-vpc-create) 섹션의 단계를 따르세요. 다음과 같이 선택합니다.
   + 조직의 소비자 계정과 공유되는 VPC 및 서브넷을 선택합니다.

1. 엔드포인트를 생성한 후 생성된 VPCe ID를 기록하여 소비자 계정에서 설정 작업을 수행할 관리자에게 제공합니다.

   VPCe ID는 `vpce-abc123def4EXAMPLE` 형식입니다.

**소비자 계정에서 공유 VPC를 설정하려면**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) Amazon OpenSearch Service 콘솔에 로그인합니다.

1. 아직 컬렉션이 없는 경우 [Amazon OpenSearch Serverless 컬렉션 관리](serverless-manage.md)의 정보를 사용하여 컬렉션을 생성합니다.

1. [네트워크 정책 생성(콘솔)](serverless-network.md#serverless-network-console)의 정보를 사용하여 네트워크 정책을 생성합니다. 다음과 같이 선택합니다.
**참고**  
이를 위해 기존 네트워크 정책을 업데이트할 수도 있습니다.

   1. **액세스 유형**에서 **VPC(권장)**를 선택합니다.

   1. **액세스를 위한 VPC 엔드포인트**에서 소유자 계정이 제공한 `vpce-abc123def4EXAMPLE` 형식의 VPCe ID를 선택합니다.

   1. **리소스 유형** 영역에서 다음을 수행합니다.
      + **OpenSearch 엔드포인트에 대한 액세스 활성화** 상자를 선택한 다음 공유 VPC에서 액세스를 활성화하는 데 사용할 컬렉션 이름 또는 컬렉션 패턴을 선택합니다.
      + **OpenSearch 대시보드에 대한 액세스 활성화** 상자를 선택한 다음 공유 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>

인터페이스 VPC 엔드포인트를 사용하도록 OpenSearch Serverless를 구성하여 VPC의 보안 태세를 개선할 수 있습니다. 인터페이스 엔드포인트는 AWS PrivateLink로 구동됩니다. 이 기술을 사용하면 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 AWS Direct Connect 연결 없이 OpenSearch Serverless APIs에 비공개로 액세스할 수 있습니다.

 AWS PrivateLink 및 VPC 엔드포인트에 대한 자세한 내용은 Amazon [VPC 사용 설명서의 VPC 엔드포인트](https://docs.aws.amazon.com/vpc/latest/privatelink/concepts.html#concepts-vpc-endpoints)를 참조하세요.

### 고려 사항
<a name="serverless-vpc-cp-considerations"></a>
+ VPC 엔드포인트는 동일한 리전 내에서만 지원됩니다.
+ VPC 엔드포인트는 Amazon Route 53을 통해 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. 탐색 창에서 **엔드포인트**를 선택합니다.

1. **엔드포인트 생성**을 선택합니다.

1. **서비스 범주(Service category)**에서 **AWS 서비스**를 선택합니다.

1. **서비스**에서를 선택합니다`com.amazonaws.region.aoss`. 예를 들어 `com.amazonaws.us-east-1.aoss`입니다.

1. **VPC**에서 엔드포인트를 생성할 VPC를 선택합니다.

1. **서브넷**에서 엔드포인트 네트워크 인터페이스를 만들 서브넷(가용 영역)을 선택합니다.

1. **보안 그룹에서** 엔드포인트 네트워크 인터페이스와 연결할 보안 그룹을 선택합니다. HTTPS(포트 443)가 허용되는지 확인합니다.

1. **정책**에서 **전체 액세스를** 선택하여 모든 작업을 허용하거나 **사용자 지정**을 선택하여 사용자 지정 정책을 연결합니다.

1. **엔드포인트 생성**을 선택합니다.

### 엔드포인트 정책 생성
<a name="serverless-vpc-cp-endpoint-policy"></a>

Amazon OpenSearch Serverless에 대한 액세스를 제어하는 VPC 엔드포인트에 엔드포인트 정책을 연결할 수 있습니다. 이 정책은 다음 정보를 지정합니다.
+ 작업을 수행할 수 있는 위탁자.
+ 수행할 수 있는 작업.
+ 작업을 수행할 수 있는 리소스.

자세한 내용은 *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 인증을 사용하면 타사 ID 공급자를 통해 OpenSearch Dashboards에 로그인하여 데이터를 인덱싱하고 검색할 수 있습니다. OpenSearch 서버리스는 IAM Identity Center, Okta, Keycloak, Active Directory Federation Services(ADFS) 및 Auth0과 같은 SAML 2.0 표준을 사용하는 공급자를 지원합니다. Okta, OneLogin 및 Microsoft Entra ID와 같은 다른 자격 증명 소스의 사용자 및 그룹을 동기화하도록 IAM Identity Center를 구성할 수 있습니다. IAM Identity Center에서 지원하는 자격 증명 소스 목록과 구성 단계는 **IAM Identity Center 사용 설명서의 [시작하기 자습서](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html)를 참조하세요.

**참고**  
SAML 인증은 웹 브라우저를 통해 OpenSearch Dashboards에 액세스하는 용도로만 사용됩니다. 인증된 사용자는 OpenSearch Dashboards의 **Dev Tools**(개발 도구)를 통해서만 OpenSearch API 작업을 요청할 수 있습니다. SAML 자격 증명으로는 OpenSearch API 작업에 직접 HTTP 요청을 할 수 **없습니다.

SAML 인증을 설정하려면 먼저 SAML 자격 증명 공급자(IdP)를 구성합니다. 그런 다음 [데이터 액세스 정책](serverless-data-access.md)에 해당 IdP의 사용자를 하나 이상 포함합니다. 이 정책은 컬렉션 및/또는 인덱스에 특정 권한을 부여합니다. 그러면 사용자는 OpenSearch Dashboards에 로그인하여 데이터 액세스 정책에서 허용되는 작업을 수행할 수 있습니다.

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


**Topics**
+ [고려 사항](#serverless-saml-considerations)
+ [필요한 권한](#serverless-saml-permissions)
+ [SAML 공급자 생성(콘솔)](#serverless-saml-creating)
+ [OpenSearch 대시보드 액세스](#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 시작 인증 및 로그아웃은 지원되지 않습니다.
+ 서비스 제어 정책(SCP)은 IAM이 아닌 자격 증명(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` – XML 메타데이터를 포함하여 주어진 SAML 공급자 구성을 수정합니다.
+ `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. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) Amazon OpenSearch Service 콘솔에 로그인합니다.

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 웹 애플리케이션”을 생성하고 ACS URL을 **Single Sign On 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 Identity Center의 경우 **Application SAML audience**(애플리케이션 SAML 대상)입니다.

1. IAM Identity Center를 사용하는 경우 `unspecified` 형식의 `Subject=${user:name}` [속성 매핑](https://docs.aws.amazon.com/singlesignon/latest/userguide/attributemappingsconcept.html)도 지정해야 합니다.

1. 자격 증명 공급자를 구성하면 IdP 메타데이터 파일이 생성됩니다. 이 XML 파일에는 TLS 인증서, 통합 인증 엔드포인트 및 자격 증명 공급자의 엔터티 ID와 같은 공급자에 대한 정보가 들어 있습니다.

   IdP 메타데이터 파일의 텍스트를 복사하여 **Provide metadata from your IdP**(IdP에서 메타데이터 제공) 필드에 붙여 넣습니다. 또는 **XML 파일에서 가져오기(Import from XML file)**를 선택하고 파일을 업로드합니다. 메타데이터 파일은 다음과 같아야 합니다.

   ```
   <?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. 사용자 이름에 대한 SAML 어설션의 `NameID` 요소를 사용하려면 **사용자 지정 사용자 ID 속성** 필드를 비워 둡니다. 어설션에서 이 표준 요소를 사용하지 않고 사용자 이름을 사용자 지정 속성으로 포함하는 경우 여기에 해당 속성을 지정합니다. 속성은 대소문자를 구분합니다. 단일 사용자 속성만 지원됩니다.

   다음 예시는 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 대시보드 제한 시간**을 지정하여 이 값을 1\$112시간(15\$1720분) 사이의 숫자로 구성할 수 있습니다. 제한 시간을 15분 이하로 설정하려는 경우 세션이 1시간으로 재설정됩니다.

1. **Create SAML provider**(SAML 공급자 생성)를 선택합니다.

## OpenSearch 대시보드 액세스
<a name="serverless-saml-dashboards"></a>

SAML 공급자를 구성한 후에는 해당 공급자와 연결된 모든 사용자 및 그룹이 OpenSearch Dashboards 엔드포인트로 이동할 수 있습니다. Dashboards URL에는 *모든 컬렉션*에 대한 `collection-endpoint/_dashboards/` 형식이 있습니다.

SAML을 활성화한 경우에서 링크를 선택하면 SAML 자격 증명을 사용하여 로그인할 수 있는 IdP 선택 페이지로 AWS Management Console 이동합니다. 먼저 드롭다운을 사용하여 ID 공급자를 선택합니다.

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


그런 다음 IdP 보안 인증을 사용하여 로그인합니다.

SAML을 활성화하지 않은 경우에서 링크를 선택하면 SAML에 대한 옵션 없이 IAM 사용자 또는 역할로 로그인하라는 AWS Management Console 메시지가 표시됩니다.

## 컬렉션 데이터에 대한 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
```

.json 파일 내의 키-값 맵으로 메타데이터 XML을 포함하여 `saml-options`를 지정합니다. 메타데이터 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
```

이 요청은 ID 공급자가 생성하는 전체 IdP 메타데이터를 포함하여 모든 기존 SAML 공급자에 대한 정보를 반환합니다.

```
{
   "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>

타사 감사자는 여러 AWS 규정 준수 프로그램의 일환으로 Amazon OpenSearch Serverless의 보안 및 규정 준수를 평가합니다. 이 프로그램에는 SOC, PCI 및 HIPAA가 포함됩니다.

 AWS 서비스 가 특정 규정 준수 프로그램의 범위 내에 있는지 알아보려면 [AWS 서비스 규정 준수 프로그램 제공 범위 내](https://aws.amazon.com/compliance/services-in-scope/)를 참조하고 관심 있는 규정 준수 프로그램을 선택합니다. 일반 정보는 [AWS 규정 준수 프로그램](https://aws.amazon.com/compliance/programs/).

를 사용하여 타사 감사 보고서를 다운로드할 수 있습니다 AWS Artifact. 자세한 내용은 [Downloading Reports inDownloading AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)을 참조하세요.

사용 시 규정 준수 책임은 데이터의 민감도, 회사의 규정 준수 목표 및 관련 법률과 규정에 따라 AWS 서비스 결정됩니다. 사용 시 규정 준수 책임에 대한 자세한 내용은 [AWS 보안 설명서를](https://docs.aws.amazon.com/security/) AWS 서비스참조하세요.