

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

# Amazon OpenSearch Service에서 OpenSearch UI 사용
<a name="application"></a>

OpenSearch UI(사용자 인터페이스)는 여러 소스의 데이터와 상호 작용할 수 있도록 통합 보기를 제공하는 Amazon OpenSearch Service의 현대화된 운영 분석 환경입니다. 호스팅하는 하나의 도메인 또는 컬렉션에서만 작동하는 OpenSearch Dashboards와 달리 OpenSearch UI는 AWS 클라우드에서 호스팅됩니다. 이를 통해 OpenSearch UI는 클러스터 업그레이드 중에 고가용성을 실현하며 기능을 유지하고, 기본적으로 여러 데이터 소스와 연결할 수 있습니다. OpenSearch Dashboards에 대한 자세한 내용은 [Amazon OpenSearch Service와 함께 OpenSearch Dashboards 사용](dashboards.md) 섹션을 참조하세요

OpenSearch UI의 주요 기능은 다음과 같습니다.
+ **다중 데이터 소스 지원** - OpenSearch UI는 여러 데이터 소스와 연결하여 포괄적인 보기를 생성할 수 있습니다. 여기에는 OpenSearch 도메인 및 서버리스 컬렉션과 Amazon CloudWatch, Amazon Security Lake, Amazon Simple Storage Service(Amazon S3)와 같은 통합 AWS 데이터 소스가 포함됩니다.
+ **업그레이드 중 가동 중지 시간 없음** - OpenSearch UI는 AWS 클라우드에서 호스팅됩니다. 즉, OpenSearch는 작동 상태가 유지되며 업그레이드 프로세스 중에 클러스터에서 데이터를 검색할 수 있습니다.
+ **워크스페이스** - 관찰성, 보안 분석 및 검색과 같은 다양한 워크플로에 대한 팀 공동 작업을 위해 선별된 공간입니다. 개인 정보 설정을 정의하고 워크스페이스의 공동 작업자에 대한 권한을 관리할 수 있습니다.
+ **Single Sign-On** - OpenSearch UI는 AWS IAM Identity Center 및 SAML through AWS Identity and Access Management (IAM) 페더레이션과 함께 작동하여 자격 증명 공급자와 통합하여 최종 사용자를 위한 Single Sign-On 환경을 생성합니다.
+ **GenAI 기반 분석 -** OpenSearch UI는 자연어 쿼리 생성을 지원하여 분석에 적합한 쿼리를 생성하는 데 도움을 줍니다. 또한 OpenSearch UI는 Amazon Q Developer와 함께 작동하며 Amazon Q 채팅을 제공하고 시각화, 알림 요약, 인사이트 및 권장 이상 탐지기를 생성하는 데 도움을 줍니다.
+ **다중 쿼리 언어 지원** - OpenSearch UI는 파이프 처리 언어(PPL), SQL, Lucene 및 Dashboards 쿼리 언어(DQL)를 지원합니다.
+ **교차 리전 및 교차 계정 지원 -** OpenSearch UI는 클러스터 간 검색 기능을 활용하여 집계된 분석 및 시각화를 위해 다른 계정 및 다른 리전의 OpenSearch 도메인에 연결할 수 있습니다.

첫 번째 OpenSearch UI를 시작하고 생성하려면 [Amazon OpenSearch Service에서 OpenSearch 사용자 인터페이스 시작하기](application-getting-started.md)의 지침을 따르세요.

OpenSearch UI용으로 릴리스된 최신 기능에 대한 자세한 내용은 [Amazon OpenSearch Service 사용자 인터페이스 릴리스 이력](application-release-history.md) 섹션을 참조하세요.

**Topics**
+ [Amazon OpenSearch Service 사용자 인터페이스 릴리스 이력](application-release-history.md)
+ [Amazon OpenSearch Service에서 OpenSearch 사용자 인터페이스 시작하기](application-getting-started.md)
+ [Amazon OpenSearch Service의 에이전트 AI](application-ai-assistant.md)
+ [고객 관리형 키를 사용하여 OpenSearch UI 애플리케이션 메타데이터 암호화](application-encryption-cmk.md)
+ [를 사용하여 SAML 페더레이션 활성화 AWS Identity and Access Management](application-enable-SAML-identity-federation.md)
+ [데이터 소스 연결 및 가상 프라이빗 클라우드 액세스 권한 관리](application-data-sources-and-vpc.md)
+ [Amazon OpenSearch Service 워크스페이스 사용](application-workspaces.md)
+ [교차 리전 및 교차 계정 데이터 액세스](application-cross-region-cross-account.md)
+ [VPC 엔드포인트에서 OpenSearch UI에 대한 액세스 관리](application-access-ui-from-vpc-endpoint.md)
+ [OpenSearch 대시보드에서 OpenSearch UI로 저장된 객체 마이그레이션](application-migration.md)
+ [OpenSearch UI 엔드포인트 및 할당량](opensearch-ui-endpoints-quotas.md)

# Amazon OpenSearch Service 사용자 인터페이스 릴리스 이력
<a name="application-release-history"></a>

다음 표에는 Amazon OpenSearch Service의 OpenSearch UI 지원 기능의 모든 릴리스와 각 릴리스에 포함된 기능 및 개선 사항이 나열되어 있습니다.


| 변경 | 릴리스 날짜 | 설명 | 
| --- | --- | --- | 
| 새로운 기능 |  2025-03-10  | OpenSearch UI는 이제 OpenSearch 도메인에 대한 교차 계정 데이터 액세스를 지원합니다. 퍼블릭 도메인과 VPC 도메인 모두에 대해 IAM 또는 AWS IAM Identity Center 인증을 사용하여 한 계정의 애플리케이션이 서로 다른 계정의 도메인에 액세스하도록 구성할 수 있습니다. 자세한 내용은 [OpenSearch 도메인에 대한 교차 계정 데이터 액세스](application-cross-account-data-access-domains.md) 단원을 참조하십시오. | 
| 새로운 기능 |  2025-12-29  | OpenSearch UI는 이제 애플리케이션 메타데이터 암호화를 위한 고객 관리형 키(CMK)를 지원합니다. 이 기능을 사용하면 암호화 키를 완전히 제어할 수 있으므로 규제 및 규정 준수 요구 사항을 충족할 수 있습니다. 또한이 시작은 OpenSearch UI에 저장된 객체의 메타데이터 크기 제한을 늘려 복잡한 쿼리, 광범위한 시각화 및 대규모 워크스페이스를 생성하고 저장할 수 있습니다. 자세한 내용은 [고객 관리형 키를 사용하여 OpenSearch UI 애플리케이션 메타데이터 암호화](application-encryption-cmk.md) 단원을 참조하십시오. | 
| 새로운 기능 |  2025-04-16  | 이제 OpenSearch UI에서 [클러스터 간 검색](cross-cluster-search.md)을 사용할 수 있습니다. 이를 통해 OpenSearch UI를 특정 AWS 리전 에서 사용하여 다른 리전의 클러스터에 액세스할 수 있습니다. 이는 동일한 리전의 클러스터와 연결된 원격 클러스터로 구성하여 지원됩니다. 자세한 내용은 [클러스터 간 검색](application-cross-cluster-search.md) 단원을 참조하십시오. | 
| 새로운 기능 |  2025-03-31  | 이제 Amazon OpenSearch Service에서 Amazon Q Developer가 정식 출시되었습니다. 자세한 내용은 [Amazon OpenSearch Service용 AI 도우미](AI-assistant-support.md) 단원을 참조하세요. | 
| 새로운 기능 |  2025-02-05  | 이제 Security Assertion Markup Language 2.0(SAML)부터 AWS Identity and Access Management (IAM)의 페더레이션이 OpenSearch UI에서 작동합니다. 이를 통해 최종 사용자를 위한 ID 공급자 시작 AWS Single Sign-On(SSO) 환경을 생성할 수 있습니다. 자세한 내용은 [를 사용하여 SAML 페더레이션 활성화 AWS Identity and Access Management](application-enable-SAML-identity-federation.md) 단원을 참조하십시오. | 
| 새로운 통합 |  2024-12-01  | Amazon CloudWatch와의 제로 ETL 통합은 로그 데이터 분석 및 시각화를 간소화하여 기술 오버헤드와 운영 비용을 줄입니다. 자세한 내용은 *AWS 뉴스 블로그*의 [New Amazon CloudWatch and Amazon OpenSearch Service launch an integrated analytics experience](https://aws.amazon.com/blogs/aws/new-amazon-cloudwatch-and-amazon-opensearch-service-launch-an-integrated-analytics-experience/)를 참조하세요. | 
| 새로운 통합 |  2024-12-01  | Amazon Security Lake와의 제로 ETL 통합을 통해 조직은 보안 데이터에서 유용한 인사이트를 효율적으로 검색, 분석, 도출할 수 있습니다. 자세한 내용은 *AWS 뉴스 블로그*의 [보안 분석 간소화를 위한 Amazon Security Lake와 Amazon OpenSearch Service 통합 기능 출시](https://aws.amazon.com/blogs/aws/introducing-amazon-opensearch-service-zero-etl-integration-for-amazon-security-lake/)를 참조하세요. | 
| 초기 릴리스 |  2024-11-07  | OpenSearch UI의 최초 퍼블릭 릴리스입니다. 자세한 내용은 *AWS 빅 데이터 블로그*의 [Amazon OpenSearch Service launches the next-generation OpenSearch UI](https://aws.amazon.com/blogs/big-data/amazon-opensearch-service-launches-the-next-generation-opensearch-ui/)를 참조하세요. | 

# Amazon OpenSearch Service에서 OpenSearch 사용자 인터페이스 시작하기
<a name="application-getting-started"></a>

Amazon OpenSearch Service에서 *애플리케이션*은 OpenSearch 사용자 인터페이스(OpenSearch UI)의 인스턴스입니다. 각 애플리케이션을 여러 데이터 소스와 연결할 수 있으며 단일 소스를 여러 애플리케이션과 연결할 수도 있습니다. 지원되는 다양한 인증 옵션을 사용하여 다양한 관리자를 위해 여러 애플리케이션을 생성할 수 있습니다.

이 주제의 정보를 사용하여 AWS Management Console 또는를 사용하여 OpenSearch UI 애플리케이션을 생성하는 프로세스를 안내합니다 AWS CLI.

**Topics**
+ [Amazon OpenSearch Service 애플리케이션을 생성하는 데 필요한 권한](#application-prerequisite-permissions)
+ [OpenSearch UI 애플리케이션 생성](#create-application)
+ [애플리케이션 관리자 관리](#managing-application-administrators)

## Amazon OpenSearch Service 애플리케이션을 생성하는 데 필요한 권한
<a name="application-prerequisite-permissions"></a>

애플리케이션을 생성하기 전에 작업에 필요한 권한이 부여되어 있는지 확인합니다. 필요한 경우 계정 관리자에게 문의하여 도움을 받으세요.

### 일반 권한
<a name="prerequisite-permissions-general"></a>

OpenSearch Service에서 애플리케이션을 사용하려면 다음 정책에 표시된 권한이 필요합니다. 권한의 용도는 다음과 같습니다.
+ 애플리케이션을 생성하고 관리하려면 5가지 `es:*Application` 권한이 필요합니다.
+ 애플리케이션에서 태그를 추가, 나열 및 제거하려면 3가지 `es:*Tags` 권한이 필요합니다.
+ 데이터 소스를 연결하려면 `aoss:BatchGetCollection`, `es:DescribeDomain` 및 `es:GetDirectQueryDataSource` 권한이 필요합니다.
+ 데이터 소스에 액세스하려면 `aoss:APIAccessAll`, `es:ESHttp*` 및 4가지 `opensearch:*DirectQuery*` 권한이 필요합니다.
+ `iam:CreateServiceLinkedRole`은 계정에서 서비스 연결 역할(SLR)을 생성할 수 있는 권한을 Amazon OpenSearch Service에 제공합니다. 이 역할을 사용하면 OpenSearch UI 애플리케이션이 계정에 Amazon CloudWatch 지표를 게시할 수 있습니다. 자세한 내용은 [권한](slr-aos.md#slr-permissions) 주제에서 [서비스 연결 역할을 사용하여 VPC 도메인 및 직접 쿼리 데이터 소스 생성](slr-aos.md) 섹션을 참조하세요.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "es:CreateApplication",
                "es:DeleteApplication",
                "es:GetApplication",
                "es:ListApplications",
                "es:UpdateApplication",
                "es:AddTags",
                "es:ListTags",
                "es:RemoveTags",
                "aoss:APIAccessAll",
                "es:ESHttp*",
                "opensearch:StartDirectQuery",
                "opensearch:GetDirectQuery",
                "opensearch:CancelDirectQuery",
                "opensearch:GetDirectQueryResult",
                "aoss:BatchGetCollection",
                "aoss:ListCollections",
                "es:DescribeDomain",
                "es:DescribeDomains",
                "es:ListDomainNames",
                "es:GetDirectQueryDataSource",
                "es:ListDirectQueryDataSources"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/opensearchservice.amazonaws.com/AWSServiceRoleForAmazonOpenSearchService"
        }
    ]
}
```

------

### IAM Identity Center 인증을 사용하는 애플리케이션을 생성할 권한(선택 사항)
<a name="prerequisite-permissions-idc"></a>

기본적으로 대시보드 애플리케이션은 AWS Identity and Access Management (IAM)을 사용하여 인증되어 AWS 리소스 사용자의 권한을 관리합니다. 하지만 기존 ID 제공자로 OpenSearch UI 애플리케이션에 로그인할 수 있는 IAM Identity Center를 사용하여 Single Sign-On 환경을 제공하도록 선택할 수 있습니다. 이 경우 이 주제 뒷부분의 절차에서 **IAM Identity Center를 통한 인증** 옵션을 선택한 다음 IAM Identity Center 사용자에게 OpenSearch UI 애플리케이션에 액세스하는 데 필요한 권한을 부여합니다.)

IAM Identity Center 인증을 사용하는 애플리케이션을 생성하려면 다음 권한이 필요합니다. *자리 표시자*를 자신의 정보로 바꿉니다. 필요한 경우 계정 관리자에게 문의하여 도움을 받으세요.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "IDCPermissions",
            "Effect": "Allow",
            "Action": [
                "es:CreateApplication",
                "es:DeleteApplication",
                "es:GetApplication",
                "es:ListApplications",
                "es:UpdateApplication",
                "es:AddTags",
                "es:ListTags",
                "es:RemoveTags",
                "aoss:BatchGetCollection",
                "aoss:ListCollections",
                "es:DescribeDomain",
                "es:DescribeDomains",
                "es:ListDomainNames",
                "es:GetDirectQueryDataSource",
                "es:ListDirectQueryDataSources",
                "sso:CreateApplication",  
                "sso:DeleteApplication",  
                "sso:PutApplicationGrant",  
                "sso:PutApplicationAccessScope",  
                "sso:PutApplicationAuthenticationMethod",  
                "sso:ListInstances",  
                "sso:DescribeApplicationAssignment",  
                "sso:DescribeApplication",  
                "sso:CreateApplicationAssignment",  
                "sso:ListApplicationAssignments",  
                "sso:DeleteApplicationAssignment",
                "sso-directory:SearchGroups",
                "sso-directory:SearchUsers",
                "sso:ListDirectoryAssociations",
                "identitystore:DescribeUser",
                "identitystore:DescribeGroup",
                "iam:ListRoles"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SLRPermission",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/opensearchservice.amazonaws.com/AWSServiceRoleForAmazonOpenSearchService"
        },
        {
            "Sid": "PassRolePermission",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/iam-role-for-identity-center"
        }
    ]
}
```

------

## OpenSearch UI 애플리케이션 생성
<a name="create-application"></a>

다음 절차 중 하나를 사용하여 및 애플리케이션 이름, 인증 방법 및 관리자를 지정하는 애플리케이션을 생성합니다.

**Topics**
+ [콘솔에서 IAM 인증을 사용하는 OpenSearch UI 애플리케이션 생성](#create-application-iam-authentication-console)
+ [콘솔에서 AWS IAM Identity Center 인증을 사용하는 OpenSearch UI 애플리케이션 생성](#create-application-iam-identity-center-authentication-console)
+ [를 사용하여 AWS IAM Identity Center 인증을 사용하는 OpenSearch UI 애플리케이션 생성 AWS CLI](#create-application-iam-identity-center-authentication-cli)

### 콘솔에서 IAM 인증을 사용하는 OpenSearch UI 애플리케이션 생성
<a name="create-application-iam-authentication-console"></a>

**콘솔에서 IAM 인증을 사용하는 OpenSearch UI 애플리케이션을 생성하려면**

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

1. 왼쪽 탐색 창에서 **OpenSearch UI(Dashboards)**를 선택합니다.

1. **애플리케이션 생성**을 선택합니다.

1. **애플리케이션 이름**에 애플리케이션의 이름을 입력합니다.

1. **IAM Identity Center를 통한 인증** 확인란을 선택하지 마세요. 를 통한 인증으로 애플리케이션을 생성하는 방법에 대한 자세한 내용은이 주제의 [콘솔에서 AWS IAM Identity Center 인증을 사용하는 OpenSearch UI 애플리케이션 생성](#create-application-iam-identity-center-authentication-console)뒷부분을 AWS IAM Identity Center참조하세요.

1. (선택 사항) 생성 중인 애플리케이션의 관리자로 자동으로 추가됩니다. **OpenSearch 애플리케이션 관리자 관리** 영역에서 다른 사용자에게 관리자 권한을 부여할 수 있습니다.
**참고**  
OpenSearch UI 애플리케이션 관리자 역할은 OpenSearch UI 애플리케이션을 편집하고 삭제할 권한을 부여합니다. 애플리케이션 관리자는 OpenSearch UI 애플리케이션에서 워크스페이스를 생성, 편집, 삭제할 수도 있습니다.

   다른 사용자에게 관리자 권한을 부여하려면 다음 중 하나를 선택합니다.
   + **특정 사용자에게 관리자의 권한 부여** - **OpenSearch 애플리케이션 관리자** 필드의 **속성** 팝업 목록에서 **IAM 사용자** 또는 

     **AWS IAM Identity Center 사용자를** 선택한 다음 관리자 권한을 부여할 개별 사용자를 선택합니다.
   + **모든 사용자에게 관리자 권한 부여** - 조직 또는 계정의 모든 사용자에게 관리자 권한이 부여됩니다.

1. (선택 사항) 암호화 설정을 구성합니다. 기본적으로 OpenSearch UI 메타데이터는 AWS 소유 키로 암호화됩니다. 암호화에 자체 고객 관리형 키(CMK)를 사용하려면 섹션을 참조하세요[고객 관리형 키를 사용하여 OpenSearch UI 애플리케이션 메타데이터 암호화](application-encryption-cmk.md).

1. (선택 사항) **태그** 영역에서 하나 이상의 태그 키 이름/값 페어를 애플리케이션에 적용합니다.

   태그는 리소스에 할당하는 선택적 메타데이터입니다. 태그를 사용하면 용도, 소유자 또는 환경을 기준으로 하는 등 리소스를 다양한 방식으로 분류할 수 있습니다.

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

### 콘솔에서 AWS IAM Identity Center 인증을 사용하는 OpenSearch UI 애플리케이션 생성
<a name="create-application-iam-identity-center-authentication-console"></a>

 AWS IAM Identity Center 인증을 사용하는 OpenSearch UI 애플리케이션을 생성하려면 [IAM Identity Center 인증을 사용하는 애플리케이션을 생성할 권한(선택 사항)](#prerequisite-permissions-idc)의 이 주제 앞부분에서 설명한 IAM 권한이 있어야 합니다.

**콘솔에서 AWS IAM Identity Center 인증을 사용하는 OpenSearch UI 애플리케이션을 생성하려면**

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

1. 왼쪽 탐색 창에서 **OpenSearch UI(Dashboards)**를 선택합니다.

1. **애플리케이션 생성**을 선택합니다.

1. **애플리케이션 이름**에 애플리케이션의 이름을 입력합니다.

1. (선택 사항) 조직 또는 계정에 대해 Single Sign-On을 활성화하려면 다음을 수행합니다.

   1. 다음 이미지와 같이 **IAM Identity Center를 통한 인증** 확인란을 선택합니다.  
![\['IAM Identity Center를 통한 인증' 상자가 선택된 'Single Sign-On 인증' 영역.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/ui-Single-sign-on-authentication.png)

   1. 다음 중 하나를 수행하세요.
      + **Identity Center 애플리케이션의 IAM 역할** 목록에서 IAM Identity Center가 OpenSearch UI 및 관련 데이터 소스에 액세스하는 데 필요한 권한을 제공하는 기존 IAM 역할을 선택합니다. 역할에 부여되어야 하는 권한은 다음 글머리 목록의 정책을 참조하세요.
      + 필요한 권한이 부여된 새 역할을 생성합니다. *IAM 사용 설명서*의 다음 절차를 지정된 옵션으로 수행하여 새 역할을 생성하고 필요한 권한 정책 및 신뢰 정책을 사용합니다.
        + 절차: [IAM 정책 생성(콘솔)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/access_policies_create-console.html)

          이 절차의 단계에 따라, 다음 정책을 정책 편집기 **JSON** 필드에 붙여 넣습니다.

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

****  

          ```
          {
              "Version":"2012-10-17",		 	 	 
              "Statement": [
                  {
                      "Sid": "IdentityStoreOpenSearchDomainConnectivity",
                      "Effect": "Allow",
                      "Action": [
                          "identitystore:DescribeUser",
                          "identitystore:ListGroupMembershipsForMember",
                          "identitystore:DescribeGroup"
                      ],
                      "Resource": "*",
                      "Condition": { 
                          "ForAnyValue:StringEquals": {
                              "aws:CalledViaLast": "es.amazonaws.com"
                          }
                      }
                  },
                  {
                      "Sid": "OpenSearchDomain",
                      "Effect": "Allow",
                      "Action": [
                          "es:ESHttp*"
                      ],
                      "Resource": "*"
                  },
                  {
                      "Sid": "OpenSearchServerless",
                      "Effect": "Allow",
                      "Action": [
                          "aoss:APIAccessAll"
                      ],
                      "Resource": "*"
                  }
              ]
          }
          ```

------
        + 절차: [사용자 지정 신뢰 정책을 사용하여 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)

          이 절차의 단계에 따라, **사용자 지정 신뢰 정책** 상자의 자리 표시자 JSON을 다음과 같이 바꿉니다.
**작은 정보**  
기존 역할에 신뢰 정책을 추가하는 경우 역할의 **신뢰 관계** 탭에서 정책을 추가합니다.

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

****  

          ```
          {
              "Version":"2012-10-17",		 	 	 
              "Statement": [
                  {
                      "Effect": "Allow",
                      "Principal": {
                          "Service": "application.opensearchservice.amazonaws.com"
                      },
                      "Action": "sts:AssumeRole"
                  },
                  {
                      "Effect": "Allow",
                      "Principal": {
                          "Service": "application.opensearchservice.amazonaws.com"
                      },
                      "Action": "sts:SetContext",
                      "Condition": {
                          "ForAllValues:ArnEquals": {
                          "sts:RequestContextProviders": "arn:aws:iam::123456789012:oidc-provider/portal.sso.us-east-1.amazonaws.com/apl/application-id"
                          }
                      }
                  }
              ]
          }
          ```

------

   1. 조직 또는 계정에 IAM Identity Center 인스턴스가 이미 생성되어 있는 경우 콘솔은 다음 이미지와 같이 Amazon OpenSearch Dashboards가 IAM Identity Center의 조직 인스턴스에 이미 연결되어 있음을 보고합니다.  
![\['IAM Identity Center의 계정 인스턴스에 연결된 Amazon OpenSearch 대시보드' 영역에는 기존 IAM Identity Center 계정 인스턴스의 URL이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/ui-connected-instance.png)

      조직 또는 계정에서 IAM Identity Center를 아직 사용할 수 없는 경우 필요한 권한이 있는 사용자나 관리자가 조직 인스턴스 또는 계정 인스턴스를 생성할 수 있습니다. **Amazon OpenSearch Dashboards를 IAM Identity Center에 연결** 영역은 다음 이미지와 같이 두 가지 방법 모두에 대한 옵션을 제공합니다.  
![\['Amazon OpenSearch Dashboards를 IAM Identity Center에 연결' 영역은 조직 인스턴스 또는 계정 인스턴스를 생성하는 버튼을 제공합니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/ui-no-connected-instance.png)

       이 경우 테스트를 위해 IAM Identity Center에서 계정 인스턴스를 생성하거나, 관리자에게 IAM Identity Center에서 조직 인스턴스를 생성하도록 요청할 수 있습니다. 자세한 내용은AWS IAM Identity Center 사용 설명서**에서 다음 주제를 참조하세요.
**참고**  
IAM Identity Center 조직 인스턴스 AWS 리전 와 다른에서 OpenSearch UI 애플리케이션을 생성하려면 [여러에서 IAM Identity Center 사용을 AWS 리전](https://docs.aws.amazon.com/singlesignon/latest/userguide/multi-region-iam-identity-center.html) 참조하세요.
      + [IAM Identity Center의 조직 인스턴스](https://docs.aws.amazon.com/singlesignon/latest/userguide/organization-instances-identity-center.html)
      + [IAM Identity Center의 계정 인스턴스](https://docs.aws.amazon.com/singlesignon/latest/userguide/account-instances-identity-center.html)
      + [활성화 AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/enable-identity-center.html)

1. (선택 사항) 생성 중인 애플리케이션의 관리자로 자동으로 추가됩니다. 다음 이미지에서 보듯이 **OpenSearch 애플리케이션 관리자 관리** 영역에서 다른 사용자에게 관리자 권한을 부여할 수 있습니다.  
![\['OpenSearch 애플리케이션 관리자 관리' 영역은 사용자 또는 모든 사용자를 선택할 권한을 관리자에게 부여하는 옵션을 제공합니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/ui-admins-management.png)
**참고**  
OpenSearch UI 애플리케이션 관리자 역할은 OpenSearch UI 애플리케이션을 편집하고 삭제할 권한을 부여합니다. 애플리케이션 관리자는 OpenSearch UI 애플리케이션에서 워크스페이스를 생성, 편집, 삭제할 수도 있습니다.

   다른 사용자에게 관리자 권한을 부여하려면 다음 중 하나를 선택합니다.
   + **특정 사용자에게 관리자의 권한 부여** - **OpenSearch 애플리케이션 관리자** 필드의 **속성** 팝업 목록에서 **IAM 사용자** 또는 

     **AWS IAM Identity Center 사용자를** 선택한 다음 관리자 권한을 부여할 개별 사용자를 선택합니다.
   + **모든 사용자에게 관리자 권한 부여** - 조직 또는 계정의 모든 사용자에게 관리자 권한이 부여됩니다.

1. (선택 사항) **태그** 영역에서 하나 이상의 태그 키 이름/값 페어를 애플리케이션에 적용합니다.

   태그는 리소스에 할당하는 선택적 메타데이터입니다. 태그를 사용하면 용도, 소유자 또는 환경을 기준으로 하는 등 리소스를 다양한 방식으로 분류할 수 있습니다.

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

### 를 사용하여 AWS IAM Identity Center 인증을 사용하는 OpenSearch UI 애플리케이션 생성 AWS CLI
<a name="create-application-iam-identity-center-authentication-cli"></a>

를 사용하여 AWS IAM Identity Center 인증을 사용하는 OpenSearch UI 애플리케이션을 생성하려면 다음 옵션과 함께 [create-application](https://docs.aws.amazon.com/cli/latest/reference/opensearch/create-application.html) 명령을 AWS CLI사용합니다.
+ `--name` - 애플리케이션의 이름입니다.
+ `--iam-identity-center-options` – (선택 사항) OpenSearch가 인증과 액세스 제어에 사용할 IAM Identity Center 인스턴스 및 IAM 역할입니다.

*자리 표시자*를 자신의 정보로 바꿉니다.

```
aws opensearch create-application \
    --name application-name \
    --iam-identity-center-options "
          {
          \"enabled\":true,
          \"iamIdentityCenterInstanceArn\":\"arn:aws:sso:::instance/sso-instance\",
          \"iamRoleForIdentityCenterApplicationArn\":\"arn:aws:iam::account-id:role/role-name\"
          }
    "
```

## 애플리케이션 관리자 관리
<a name="managing-application-administrators"></a>

OpenSearch UI 애플리케이션 관리자는 OpenSearch UI 애플리케이션을 편집하고 삭제할 권한이 있는 정의된 역할입니다.

기본적으로 OpenSearch UI 애플리케이션의 생성자는 OpenSearch UI 애플리케이션의 첫 번째 관리자입니다.

### 콘솔을 사용하여 OpenSearch UI 관리자 관리
<a name="managing-application-administrators-console"></a>

애플리케이션 생성 워크플로 중에 또는 애플리케이션이 생성된 후에 **편집** 페이지에서 AWS Management Console의 OpenSearch UI 애플리케이션에 관리자를 추가할 수 있습니다.

OpenSearch UI 애플리케이션 관리자 역할은 OpenSearch UI 애플리케이션을 편집하고 삭제할 권한을 부여합니다. 애플리케이션 관리자는 OpenSearch UI 애플리케이션에서 워크스페이스를 생성, 편집, 삭제할 수도 있습니다.

애플리케이션 세부 정보 페이지에서 IAM 보안 주체의 Amazon 리소스 이름(ARN)을 검색하거나 IAM Identity Center 사용자의 이름을 검색할 수 있습니다.

**콘솔을 사용하여 OpenSearch UI 관리자를 관리하려면**

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

1. 왼쪽 탐색 창에서 **OpenSearch UI(Dashboards)**를 선택합니다.

1. **OpenSearch 애플리케이션** 영역에서 기존 애플리케이션의 이름을 선택합니다.

1. **편집**을 선택합니다.

1. 다른 사용자에게 관리자 권한을 부여하려면 다음 중 하나를 선택합니다.
   + **특정 사용자에게 관리자의 권한 부여** - **OpenSearch 애플리케이션 관리자** 필드의 **속성** 팝업 목록에서 **IAM 사용자** 또는 

     **AWS IAM Identity Center 사용자를** 선택한 다음 관리자 권한을 부여할 개별 사용자를 선택합니다.
   + **모든 사용자에게 관리자 권한 부여** - 조직 또는 계정의 모든 사용자에게 관리자 권한이 부여됩니다.

1. **업데이트**를 선택합니다.

추가적인 관리자를 제거할 수 있지만 각 OpenSearch UI 애플리케이션에서는 관리자를 한 명 이상 유지해야 합니다.

### 를 사용하여 OpenSearch UI 관리자 관리 AWS CLI
<a name="managing-application-administrators-cli"></a>

 AWS CLI를 사용하여 OpenSearch UI 애플리케이션 관리자를 생성하고 업데이트할 수 있습니다.

#### 를 사용하여 OpenSearch UI 관리자 생성 AWS CLI
<a name="creating-application-administrators-cli"></a>

다음은 OpenSearch UI 애플리케이션을 생성할 때 IAM 보안 주체 및 IAM Identity Center 사용자를 관리자로 추가하는 예입니다.

##### 예 1: IAM 사용자를 관리자로 추가하는 OpenSearch UI 애플리케이션 생성
<a name="add-admin-examples-iam-user-cli"></a>

다음 명령을 실행하여 IAM 사용자를 관리자로 추가하는 OpenSearch UI 애플리케이션을 생성합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

```
aws opensearch create-application \
    --name application-name \
    --app-configs "
        {
        \"key\":\"opensearchDashboards.dashboardAdmin.users\",
        \"value\":\"arn:aws:iam::account-id:user/user-id\"
        }
    "
```

##### 예 2: IAM Identity Center를 활성화하고 IAM Identity Center 사용자 ID를 OpenSearch UI 애플리케이션 관리자로 추가하는 OpenSearch UI 애플리케이션 생성
<a name="add-admin-examples-iam-identify-center-user-cli"></a>

다음 명령을 실행하여 IAM Identity Center를 활성화하고 IAM Identity Center 사용자 ID를 OpenSearch UI 애플리케이션 관리자로 추가하는 OpenSearch UI 애플리케이션을 생성합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

`key`는 OpenSearch UI 애플리케이션의 관리자 역할과 같이 설정할 구성 항목을 지정합니다. 유효한 값에는 `opensearchDashboards.dashboardAdmin.users` 및 `opensearchDashboards.dashboardAdmin.groups`(이)가 있습니다.

*xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx*는 키에 할당된 값[예: IAM 사용자의 Amazon 리소스 이름(ARN)]을 나타냅니다.

```
aws opensearch create-application \
    --name myapplication \
    --iam-identity-center-options "
        {
        \"enabled\":true,
        \"iamIdentityCenterInstanceArn\":\"arn:aws:sso:::instance/ssoins-instance-id\",
        \"iamRoleForIdentityCenterApplicationArn\":\"arn:aws:iam::account-id:role/role-name\"
        }
    " \
    --app-configs "
        {
        \"key\":\"opensearchDashboards.dashboardAdmin.users\",
        \"value\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"
        }
    "
```

#### 를 사용하여 OpenSearch UI 관리자 업데이트 AWS CLI
<a name="updating-application-administrators-cli"></a>

다음은 기존 OpenSearch 애플리케이션의 관리자로 할당된 IAM 보안 주체 및 IAM Identity Center 사용자를 업데이트하는 예입니다.

##### 예 1: IAM 사용자를 기존 OpenSearch 애플리케이션의 관리자로 추가
<a name="update-admin-examples-iam-user-cli"></a>

다음 명령을 실행하여 IAM 사용자를 관리자로 추가하도록 OpenSearch UI 애플리케이션을 업데이트합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

```
aws opensearch update-application \
    --id myapplication \
    --app-configs "
        {
        \"key\":\"opensearchDashboards.dashboardAdmin.users\",
        \"value\":\"arn:aws:iam::account-id:user/user-id\"
        }
    "
```

##### 예 2: IAM Identity Center 사용자 ID를 OpenSearch UI 애플리케이션 관리자로 추가하도록 OpenSearch UI 애플리케이션 업데이트
<a name="update-admin-examples-iam-identify-center-user-cli"></a>

다음 명령을 실행하여 IAM Identity Center 사용자 ID를 OpenSearch UI 애플리케이션 관리자로 추가하도록 OpenSearch UI 애플리케이션을 업데이트합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

`key`는 OpenSearch UI 애플리케이션의 관리자 역할과 같이 설정할 구성 항목을 지정합니다. 유효한 값에는 `opensearchDashboards.dashboardAdmin.users` 및 `opensearchDashboards.dashboardAdmin.groups`(이)가 있습니다.

*xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx*는 키에 할당된 값[예: IAM 사용자의 Amazon 리소스 이름(ARN)]을 나타냅니다.

```
aws opensearch update-application \
    --id myapplication \
    --app-configs "
        {
        \"key\":\"opensearchDashboards.dashboardAdmin.users\",
        \"value\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"
        }
    "
```

# Amazon OpenSearch Service의 에이전트 AI
<a name="application-ai-assistant"></a>

OpenSearch UI에는 운영 분석을 간소화하고 엔지니어링 및 지원 팀의 인시던트 조사를 가속화하도록 설계된 에이전트 AI 기능 제품군이 포함되어 있습니다.

OpenSearch UI 애플리케이션의 모든 페이지에서 **AI 질문** 버튼을 선택하여 에이전트 채팅을 엽니다. Agentic Chat은 보고 있는 페이지의 컨텍스트를 이해하고, 에이전트 도구를 사용하여 기본 데이터를 분석하고, 쿼리를 업데이트하여 검색에 결과를 표시하고, 질문에 명확하고 정확하게 답변합니다. 복잡한 근본 원인 분석을 위해 심층 조사가 필요한 경우 조사 에이전트가 다단계 워크플로를 통해 자율적으로 계획, 실행 및 반영하도록 트리거하여 데이터 증거로 뒷받침되는 구조화된 가설을 제공할 수 있습니다. 두 에이전트 기능을 모두 강화하는 것은 대화 또는 조사 내에서 컨텍스트를 유지하는 메모리 계층인 Agentic Memory이므로 다양한 웹 세션에서 동일한 일관된 컨텍스트로 후속 질문을 계속 할 수 있습니다.

![\[OpenSearch UI의 검색 페이지에는 자연어 입력 "10초 이상의 지연 시간으로 모든 요청 찾기"에서 PPL 쿼리를 생성하는 에이전트 채팅이 표시되고 쿼리 설명과 조사 시작 버튼이 표시된 AI 요청 패널이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/agentic-chat-discover-ppl.png)


## 주요 기능
<a name="application-ai-assistant-key-capabilities"></a>
+ **에이전트 채팅** - OpenSearch UI의 모든 페이지에 있는 AI 질문 기능에 포함된 에이전트 채팅은 현재 컨텍스트를 이해하고 도구를 호출하여 데이터를 분석하여 질문에 가장 잘 답변합니다. 검색에서 채팅 인터페이스에 자연어를 입력하여 파이프 처리 언어(PPL) 쿼리를 생성하고 반복하므로 실행 가능한 인사이트를 얻기 위해 PPL 전문가가 될 필요가 없습니다. 또한 시각화에서 직접 대화를 시작할 수 있습니다. 여기서 Agentic Chat은 그래프에서 이상을 식별하고, 기본 데이터와 상호 연관시키고, 분석을 생성할 수 있습니다. 복잡한 근본 원인 분석이 필요한 경우 `/investigate`슬래시 명령을 사용하여 진행 중인 대화 또는 새 지침에 따라 조사 에이전트를 시작합니다.
+ **조사 에이전트** - 채팅`/investigate`에 입력하거나 기능 페이지에서 **조사 시작** 버튼을 선택하여 활성화하는 목표 기반 심층 연구 에이전트입니다. "이 지연 시간 스파이크의 근본 원인 찾기"와 같은 조사 목표를 입력합니다. 조사 에이전트는 데이터와 명시된 목표를 사용하여 자율적으로 계획하고, 쿼리 및 분석을 실행하고, 다단계 워크플로를 통해 반영합니다. 일반적으로 몇 분 이내에 조사가 완료되면 각각 데이터 증거로 뒷받침되는 가능성별로 순위가 매겨진 구조화된 가설이 생성됩니다. 추론의 모든 단계에 대한 완전한 투명성을 제공하므로 결과를 확인하고 신뢰할 수 있습니다.
+ **에이전트 메모리** - 일관된 컨텍스트 내에서 계속 질문하거나 조사할 수 있도록 대화 또는 조사 내에서 컨텍스트를 유지하는 서비스 관리형 메모리 계층입니다. 에이전트 메모리를 사용하면 에이전트 채팅과 조사 에이전트가 세션 전체에서 연속성을 유지할 수 있습니다.

## 요금 및 사용 한도
<a name="application-ai-assistant-pricing"></a>

에이전트 AI 기능은 무료로 사용할 수 있습니다. 침해를 방지하기 위해 계정당 토큰 기반 사용 제한이 적용됩니다.

에이전트 AI 기능은 Amazon Bedrock의 파운데이션 모델을 사용합니다. 모든 Amazon Bedrock 보안 및 데이터 거버넌스 구성은 에이전트 AI 기능에 적용됩니다. 자세한 내용은 [Amazon Bedrock의 데이터 보호를](https://docs.aws.amazon.com/bedrock/latest/userguide/data-protection.html) 참조하세요.

## 보안
<a name="application-ai-assistant-security"></a>

에이전트 AI 기능은 기존 보안 프레임워크 내에서 작동하며 구성된 액세스 제어를 우회하거나 재정의하지 않습니다. Agentic Chat과 상호 작용하거나 조사 에이전트를 시작할 때 AI 기능은 현재 IAM 또는 IAM Identity Center 자격 증명을 사용하여 인증하고 모든 관련 권한을 상속합니다. AI 어시스턴트는 기존 역할 기반 액세스 제어(RBAC) 정책을 통해 이미 명시적으로 액세스할 수 있는 데이터 소스, 인덱스 및 시각화만 쿼리할 수 있습니다.

OpenSearch 도메인이 필드 수준 또는 문서 수준 보안으로 세분화된 액세스 제어를 구현하는 경우 AI는 이러한 제한을 준수하며 권한 범위를 벗어나는 제한된 필드 또는 문서의 데이터를 표시할 수 없습니다. 마찬가지로 에이전트 채팅 또는 조사 중에 수행된 데이터 검색으로 생성된 모든 PPL 쿼리는 사용자 컨텍스트로 실행되므로 구성된 모든 보안 정책이 완전히 적용됩니다.

이 권한 상속 모델은 AI 기능을 활성화해도 새로운 보안 취약성이 생성되거나 관리자가 AI 상호 작용을 위한 별도의 권한 구조를 관리하도록 요구하지 않도록 합니다.

## 에이전트 AI 기능 활성화 및 비활성화
<a name="application-ai-assistant-enable-disable"></a>

에이전트 AI 기능은 OpenSearch 도메인에서 AI 기능을 명시적으로 비활성화하지 않는 한 새 OpenSearch UI 애플리케이션과 기존 애플리케이션에 대해 자동으로 활성화됩니다.

AI 기능을 활성화하거나 비활성화하려면 AWS Management Console 또는 API를 사용할 수 있습니다.
+ **콘솔** - OpenSearch UI 애플리케이션의 세부 정보 페이지로 이동하여 여기에서 AI 기능을 업데이트합니다.  
![\[콘솔의 AI Assistant 기능 관리 페이지에는 챗봇 및 에이전트 조사 기능 활성화 확인란과 업데이트 버튼이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/agentic-ai-manage-features.png)
+ **API** - [RegisterCapability](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_RegisterCapability.html) API를 사용하여 AI 기능을 활성화하거나 [DeregisterCapability](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_DeregisterCapability.html) API를 사용하여 기능을 비활성화합니다.

## 리전 가용성
<a name="application-ai-assistant-regions"></a>

에이전트 AI 기능은 AWS 리전다음에서 사용할 수 있습니다.
+ 아시아 태평양(도쿄) - ap-northeast-1
+ 아시아 태평양(시드니) - ap-southeast-2
+ 유럽(프랑크푸르트) - eu-central-1
+ 유럽(스톡홀름) - eu-north-1
+ 유럽(스페인) – eu-south-2
+ 유럽(아일랜드) - eu-west-1
+ 미국 동부(버지니아 북부) - us-east-1
+ 미국 동부(오하이오) - us-east-2
+ 미국 서부(오레곤) - us-west-2

**Topics**
+ [주요 기능](#application-ai-assistant-key-capabilities)
+ [요금 및 사용 한도](#application-ai-assistant-pricing)
+ [보안](#application-ai-assistant-security)
+ [에이전트 AI 기능 활성화 및 비활성화](#application-ai-assistant-enable-disable)
+ [리전 가용성](#application-ai-assistant-regions)
+ [Amazon OpenSearch Service의 에이전트 채팅](application-agentic-chat.md)
+ [Amazon OpenSearch Service의 조사 에이전트](application-investigation-agent.md)
+ [Amazon OpenSearch Service의 에이전트 메모리](application-agentic-memory.md)

# Amazon OpenSearch Service의 에이전트 채팅
<a name="application-agentic-chat"></a>

Agentic Chat은 OpenSearch UI의 모든 페이지에 포함된 AI 어시스턴트입니다. **AI 질문** 버튼을 선택하여 데이터에 대해 질문하고, 쿼리를 생성하고, 조사를 시작할 수 있는 채팅 패널을 엽니다. Agentic Chat은 검색 및 조사에서 보고 있는 페이지의 컨텍스트를 이해하고 에이전트 도구를 사용하여 기본 데이터를 분석합니다.

![\[오른쪽 상단에 AI 질문 버튼이 강조 표시된 OpenSearch UI의 검색 페이지.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/agentic-chat-ask-ai-button.png)


채팅 패널을 열면 Agentic Chat은 데이터에 대해 질문하거나, 문제를 조사하거나, 개념을 설명하는 등 시작하는 데 도움이 되는 옵션을 제공합니다. 이전에 대화를 시작한 경우 페이지를 탐색할 때 채팅 패널에 계속 표시되므로 중단한 부분을 계속 진행할 수 있습니다. 또는 오른쪽 상단 모서리에 있는 **새 채팅** 버튼을 선택하여 새 대화를 시작합니다.

![\[데이터에 대해 질문하거나, 문제를 조사하거나, 개념을 설명할 수 있는 옵션이 포함된 AI Assistant 환영 메시지를 보여주는 Agentic Chat 패널입니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/agentic-chat-ask-ai-panel.png)


## 검색과 함께 에이전트 채팅 사용
<a name="application-agentic-chat-discover"></a>

관찰성 워크스페이스의 검색 페이지에서 채팅 인터페이스에 자연어를 입력하여 PPL 쿼리를 생성할 수 있습니다. Agentic Chat은 질문을 PPL로 변환하고 쿼리를 실행하며 결과를 검색 보기에 직접 표시합니다. 데이터에서 실행 가능한 인사이트를 얻기 위해 PPL의 전문가가 될 필요는 없습니다.

생성된 쿼리를 구체화하려면 "상태 코드 500에 대한 필터 추가"와 같은 자연어로 후속 질문을 합니다. Agentic Chat은 현재 쿼리의 컨텍스트를 이해하고 그에 따라 수정합니다. 에 집계 조정, 시간 범위 변경 또는 결과에 추가 필드를 추가하도록 요청할 수도 있습니다. 각 반복은 새 쿼리 결과로 검색 보기를 업데이트합니다.

## 시각화와 함께 에이전트 채팅 사용
<a name="application-agentic-chat-visualizations"></a>

시각화에서 직접 Agentic Chat과의 대화를 시작할 수 있습니다. 시각화 패널에서 컨텍스트 메뉴를 열고 **AI 질문을** 선택합니다. Agentic Chat은 시각화를 분석하고, 그래프에서 이상을 식별하고, 기본 데이터와 상호 연관시키고, 분석을 생성합니다.

![\[컨텍스트 메뉴의 AI 질문 옵션을 보여주는 OpenSearch UI의 시각화로, 에이전트 채팅 패널이 시각화를 분석합니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/agentic-chat-visualization.png)


## 채팅에서 조사 시작
<a name="application-agentic-chat-investigation"></a>

복잡한 근본 원인 분석이 필요한 경우 Agentic Chat에서 직접 조사 에이전트를 시작할 수 있습니다. 채팅 입력에서 `/investigate` 슬래시 명령을 사용하거나 기능 페이지에서 **조사 시작** 버튼을 선택합니다.

조사 에이전트에 대한 자세한 내용은 섹션을 참조하세요[Amazon OpenSearch Service의 조사 에이전트](application-investigation-agent.md).

## 지원되는 도구
<a name="application-agentic-chat-tools"></a>

Agentic Chat은 다음 도구를 사용하여 데이터를 분석하고 질문에 답합니다. 사용 가능한 도구의 up-to-date 목록을 보려면 채팅 인터페이스에 "사용할 수 있는 도구"를 입력합니다.

**프런트엔드 도구**  
이러한 도구는 OpenSearch UI를 업데이트합니다.
+ `create_investigation` - 목표, 증상, 인덱스 및 시간 범위와 같은 세부 정보가 포함된 새 에이전트 조사 노트북을 생성합니다.
+ `execute_ppl_query` - 현재 데이터 세트에 대해 PPL 쿼리를 실행하고 검색 페이지에 결과를 표시합니다.
+ `update_time_range` - 현재 검색 페이지에서 글로벌 시간 범위 필터를 업데이트합니다(예: "지난 24시간" 또는 "지난 주").

**백엔드 도구**  
이러한 도구는 OpenSearch 데이터 및 APIs.
+ `SearchIndexTool` - DSL 쿼리를 사용하여 인덱스를 검색합니다.
+ `MsearchTool` - 단일 요청으로 여러 검색 작업을 실행합니다.
+ `CountTool` - 쿼리와 일치하는 문서 수를 반환합니다.
+ `ExplainTool` - 문서가 쿼리와 일치하거나 일치하지 않는 이유를 설명합니다.
+ `ListIndexTool` - 클러스터의 인덱스를 선택적 세부 정보와 함께 나열합니다.
+ `IndexMappingTool` - 인덱스 매핑 및 설정을 검색합니다.
+ `GetShardsTool` - 인덱스에 대한 샤드 정보를 가져옵니다.
+ `ClusterHealthTool` - 클러스터 상태 정보를 반환합니다.
+ `LogPatternAnalysisTool` - 로그 패턴을 분석하거나, 시간 범위를 비교하거나, 트레이스 시퀀스 분석을 수행합니다.
+ `MetricChangeAnalysisTool` - 두 시간 범위 간의 숫자 필드의 백분위수 분포를 비교합니다.
+ `DataDistributionTool` - 선택적으로 기준과 비교하여 대상 시간 범위의 필드 값 분포를 분석합니다.
+ `GenericOpenSearchApiTool` - OpenSearch API 엔드포인트를 직접 호출하기 위한 유연한 도구입니다.

# Amazon OpenSearch Service의 조사 에이전트
<a name="application-investigation-agent"></a>

조사 에이전트는 사용자를 대신하여 복잡한 문제를 자율적으로 조사하는 OpenSearch UI의 목표 기반 심층 연구 에이전트입니다. 데이터와 명시된 목표를 사용하여 계획하고, 쿼리 및 분석을 실행하고, 다단계 워크플로를 통해 반영합니다. 일반적으로 몇 분 이내에 조사가 완료되면 각각 데이터 증거로 뒷받침되는 가능성별로 순위가 매겨진 구조화된 가설이 생성됩니다. 추론의 모든 단계에 대한 완전한 투명성을 제공하므로 결과를 확인하고 신뢰할 수 있습니다.

## 조사 시작
<a name="application-investigation-agent-start"></a>

다음 두 가지 방법으로 조사를 시작할 수 있습니다.
+ 검색, 시각화 또는 기타 지원되는 기능 페이지에서 **조사 시작** 버튼을 선택합니다. 조사 목표를 입력하고 "근본 원인 분석" 또는 "성능 문제"와 같은 제안된 템플릿 중에서 선택할 수 있는 대화 상자가 나타납니다.
+ Agentic Chat에서 조사 목표와 함께 채팅 입력에 `/investigate` 슬래시 명령을 입력합니다.

![\[조사 시작 대화 상자에는 조사 목표에 대한 텍스트 필드와 근본 원인 분석 및 성능 문제에 대한 제안 템플릿이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/investigation-agent-start.png)


에이전트 채팅에 대한 자세한 내용은 섹션을 참조하세요[Amazon OpenSearch Service의 에이전트 채팅](application-agentic-chat.md).

## 조사 결과 검토
<a name="application-investigation-agent-results"></a>

조사가 완료되면 조사 에이전트는 신뢰 수준과 뒷받침하는 증거가 포함된 기본 가설을 제시합니다. 결과 페이지에는 수행된 조사 단계, 중요도별로 순위가 매겨진 관련 조사 결과, 대체 가설이 표시됩니다.

![\[조사 결과 페이지에는 수락 및 배제 옵션이 있는 기본 가설, 중요도별로 순위가 매겨진 관련 조사 결과, 대체 가설이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/investigation-agent-results.png)


각 가설 뒤에 있는 결과를 검토한 다음 **수락**을 선택하여 가설을 확인하거나 **규칙 아웃**을 선택하여 가설을 거부할 수 있습니다. 가능성이 낮은 대체 가설도 검토할 수 있습니다. 평가와 더 일치하는 경우 최종 결론으로 대체 가설을 선택할 수 있습니다.

## 재조사
<a name="application-investigation-agent-reinvestigate"></a>

조사 결과에 더 많은 설명이 필요하거나 조사 에이전트가 사용 가능한 데이터 세트에서 조사 질문에 답할 수 없다고 판단하는 경우 **재조사** 옵션을 사용하여 조사를 조정하고 다시 실행할 수 있습니다. **재조사**를 선택하여 초기 목표를 편집하고, 시간 범위를 조정하고, 필요에 따라 기존 가설과 조사 결과를 새 조사로 가져옵니다.

![\[초기 목표를 편집하고, 시간 범위를 조정하고, 기존 가설과 조사 결과를 새 조사로 가져오는 옵션을 보여주는 문제 재조사 대화 상자입니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/investigation-agent-reinvestigate.png)


# Amazon OpenSearch Service의 에이전트 메모리
<a name="application-agentic-memory"></a>

에이전트 메모리는 에이전트 채팅 및 조사 에이전트를 지원하는 서비스 관리형 메모리 계층입니다. 대화 또는 조사 내에서 컨텍스트를 유지하므로 다양한 기능 페이지, 브라우저 탭 및 페이지 새로 고침에서 일관된 경험을 할 수 있습니다. 에이전트 메모리는 자동으로 작동하며 사용자 구성이 필요하지 않습니다.

에이전트 메모리는 OpenSearch 에이전트 메모리 프레임워크를 기반으로 합니다. 메모리 스토리지는 개인 정보 보호를 위해 사용자 ID로 격리됩니다.

## 데이터 보호
<a name="application-agentic-memory-data-protection"></a>

에이전트 메모리는 무료로 사용할 수 있습니다. Agentic Memory에 저장된 고객 데이터는 서비스 관리형 키로 암호화됩니다. OpenSearch UI 애플리케이션에 대해 고객 관리형 키(CMK) 암호화를 활성화한 경우 대신 CMK로 메모리 데이터가 암호화됩니다. 메모리는 서비스 관리형 Amazon OpenSearch Serverless 컬렉션에 저장됩니다.

CMK 암호화에 대한 자세한 내용은 섹션을 참조하세요[고객 관리형 키를 사용하여 OpenSearch UI 애플리케이션 메타데이터 암호화](application-encryption-cmk.md).

## 제한 사항
<a name="application-agentic-memory-limitations"></a>

Agentic Memory는 서로 다른 대화 스레드에서 컨텍스트를 유지할 수 없습니다.

# 고객 관리형 키를 사용하여 OpenSearch UI 애플리케이션 메타데이터 암호화
<a name="application-encryption-cmk"></a>

시각적 자산 및 구성은 OpenSearch UI 애플리케이션의 메타데이터로 저장됩니다. 여기에는 저장된 쿼리, 시각화 및 대시보드가 포함됩니다. 연결된 데이터 소스의 데이터는 메타데이터에 저장되지 않습니다. 데이터 소스의 데이터 암호화에 대한 자세한 내용은 [Amazon OpenSearch Service for OpenSearch 도메인의 데이터 보호](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/data-protection.html) 및 [Amazon OpenSearch Serverless for 서버리스 컬렉션의 암호화](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-encryption.html)를 참조하세요. OpenSearch 

OpenSearch UI 메타데이터는 저장 시 암호화로 보호됩니다. 이렇게 하면 무단 액세스를 방지할 수 있습니다. 암호화는 AWS Key Management Service (AWS KMS)를 사용하여 암호화 키를 저장하고 관리합니다. 기본적으로 OpenSearch UI 메타데이터는 AWS 소유 키로 암호화됩니다.

고객 관리형 키(CMK) 기능을 사용하여 자체 암호화 키를 관리할 수도 있습니다. 이를 통해 규제 및 규정 준수 요구 사항을 충족할 수 있습니다. CMK를 사용하려면 새 OpenSearch UI 애플리케이션을 생성하고 생성 프로세스에서 CMK를 활성화해야 합니다. 현재 기존 OpenSearch UI 애플리케이션을 AWS 소유 키에서 CMK로 업데이트하는 것은 지원되지 않습니다.

고객 관리형 키를 사용해야 하는 경우:
+ 조직에 키 관리에 대한 규정 준수 요구 사항이 있습니다.
+ 암호화 키 사용에 대한 감사 추적이 필요합니다.
+ 키 교체 일정을 제어하려는 경우
+ 기존 키 관리 워크플로와 통합해야 합니다.

고객 관리형 키를 사용하면 키를 완전히 제어할 수 있습니다. 여기에는 다음과 같은 기능이 포함됩니다.
+ 키 정책 수립 및 관리
+ IAM 정책 및 권한 부여 수립 및 관리
+ 키 활성화 및 비활성화
+ 키의 암호화 구성 요소 교체
+ 키에 태그 추가
+ 키 별칭 생성
+ 키 삭제 예약

**참고**  
고객 관리형 키는 OpenSearch UI 애플리케이션 AWS 리전 과 동일한에 있어야 합니다. 다른 리전의 키는 사용할 수 없습니다.

**Topics**
+ [고객 관리형 키를 사용하기 위한 사전 조건](#application-encryption-cmk-prerequisites)
+ [콘솔을 사용하여 고객 관리형 키 암호화로 애플리케이션 생성](#application-encryption-cmk-create-console)
+ [를 사용하여 고객 관리형 키 암호화로 애플리케이션 생성 AWS CLI](#application-encryption-cmk-create-cli)
+ [고객 관리형 키 사용 모니터링](#application-encryption-cmk-monitoring)
+ [암호화 설정 업데이트](#application-encryption-cmk-update)

## 고객 관리형 키를 사용하기 위한 사전 조건
<a name="application-encryption-cmk-prerequisites"></a>

고객 관리형 키를 사용하여 OpenSearch UI 애플리케이션 메타데이터를 암호화하려면 먼저에서 대칭 암호화 키를 생성해야 합니다 AWS KMS. 키 생성에 대한 지침은 *AWS KMS 개발자 안내서*의 [키 생성을](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) 참조하세요.

고객 관리형 키의 키 정책은 키를 사용할 수 있는 OpenSearch UI 권한을 부여해야 합니다. 다음 키 정책을 사용하여 *자리 표시자 값을* 자신의 정보로 바꿉니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowOpenSearchUIToUseKey",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "application.opensearchservice.amazonaws.com"
                ]
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowKeyAdministration",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::account-id:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}
```

이 정책에는 두 가지 문이 포함됩니다.
+ 첫 번째 문은 OpenSearch UI가 암호화 작업에 키를 사용하도록 허용합니다.
+ 두 번째 문은의 사용자가 키를 관리할 AWS 계정 수 있도록 허용합니다. 여기에는 키 정책을 업데이트하고, 키를 활성화 또는 비활성화하고, 키 삭제를 예약할 수 있는 권한이 포함됩니다. 루트 보안 주체를 특정 IAM 사용자 또는 역할로 대체하여 이러한 권한을 추가로 제한할 수 있습니다.

키 정책에 대한 자세한 내용은 *AWS KMS 개발자 안내서*의 [에서 키 정책 사용을 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) 참조하세요.

## 콘솔을 사용하여 고객 관리형 키 암호화로 애플리케이션 생성
<a name="application-encryption-cmk-create-console"></a>

콘솔에서 OpenSearch UI 애플리케이션을 생성할 때 애플리케이션의 메타데이터를 암호화하기 위한 고객 관리형 키를 지정할 수 있습니다.

**콘솔을 사용하여 고객 관리형 키 암호화를 사용하여 OpenSearch UI 애플리케이션을 생성하려면**

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

1. 왼쪽 탐색 창에서 **OpenSearch UI(Dashboards)**를 선택합니다.

1. **애플리케이션 생성**을 선택합니다.

1. **애플리케이션 이름**에 애플리케이션의 이름을 입력합니다.

1. 필요에 따라 인증 및 관리자 설정을 구성합니다. 자세한 내용은 [Amazon OpenSearch Service에서 OpenSearch 사용자 인터페이스 시작하기](application-getting-started.md) 단원을 참조하십시오.

1. **암호화** 섹션의 **저장 시 암호화**에서 **고객 관리형 키 사용을** 선택합니다.

1. 목록에서 기존 고객 관리형 키를 선택하거나 **키 생성을** 선택하여 새 키를 생성합니다 AWS KMS.
**참고**  
키는 생성 중인 애플리케이션 AWS 리전 과 동일한에 있어야 합니다.

1. (선택 사항) 애플리케이션에 태그를 추가합니다.

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

## 를 사용하여 고객 관리형 키 암호화로 애플리케이션 생성 AWS CLI
<a name="application-encryption-cmk-create-cli"></a>

를 사용하여 고객 관리형 키 암호화로 OpenSearch UI 애플리케이션을 생성하려면 `--kms-key-arn` 파라미터와 함께 [create-application](https://docs.aws.amazon.com/cli/latest/reference/opensearch/create-application.html) 명령을 AWS CLI사용합니다.

*자리 표시자*를 자신의 정보로 바꿉니다.

```
aws opensearch create-application \
    --name my-application \
    --kms-key-arn arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
```

`--kms-key-arn` 파라미터를 지정하지 않으면 OpenSearch는 AWS관리형 키를 사용하여 애플리케이션의 메타데이터를 암호화합니다.

## 고객 관리형 키 사용 모니터링
<a name="application-encryption-cmk-monitoring"></a>

OpenSearch UI 애플리케이션에서 고객 관리형 키를 사용하는 경우는 키를 사용할 때마다 AWS CloudTrail 로그에 AWS KMS 기록합니다. 이러한 로그를 사용하여 키 사용 방식과 시기를 모니터링할 수 있습니다. 로그에는 키에 액세스한 사용자 또는 서비스가 표시됩니다.

AWS AWS KMS 는 매년 고객 관리형 키를 자동으로 교체합니다. 필요에 따라 키를 수동으로 교체할 수도 있습니다. 키 교체에 대한 자세한 내용은 *AWS KMS 개발자 안내서*의 [KMS 키 교체](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)를 참조하세요.

키 사용량 모니터링에 대한 자세한 내용은 *AWS KMS 개발자 안내서*의 [를 사용하여 AWS KMS API 호출 로깅 AWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html)을 참조하세요.

**참고**  
고객 관리형 키를 사용하면 AWS KMS 요금이 발생합니다. 요금은 저장된 API 요청 및 키 수를 기준으로 합니다. 요금 세부 정보는 [AWS Key Management Service 요금을](https://aws.amazon.com/kms/pricing/) 참조하세요.

## 암호화 설정 업데이트
<a name="application-encryption-cmk-update"></a>

OpenSearch UI 애플리케이션을 생성한 후에는 암호화 설정을 변경할 수 없습니다. 다른 고객 관리형 키를 사용해야 하는 경우 새 애플리케이션을 생성해야 합니다. 관리 AWS형 키와 고객 관리형 키 간에 전환해야 하는 경우 원하는 암호화 설정으로 새 애플리케이션도 생성해야 합니다.

**중요**  
고객 관리형 키를 비활성화하거나 삭제하기 전에 다음 사항을 고려하세요.  
키를 비활성화하면 애플리케이션이 암호화된 메타데이터에 액세스할 수 없게 됩니다. 액세스를 복원하려면 동일한 키를 다시 활성화해야 합니다.
키를 삭제하면 애플리케이션의 저장된 객체에 영구적으로 액세스할 수 없게 됩니다. 여기에는 쿼리, 시각화 및 대시보드가 포함됩니다. 삭제된 키는 복구할 수 없습니다.
키 상태를 변경하기 전에 키 ARN을 문서화하는 것이 좋습니다.

**다음 단계**  
애플리케이션에 대한 CMK 암호화를 구성한 후 다음을 수행할 수 있습니다.
+ 데이터 소스를 애플리케이션과 연결합니다. 자세한 내용은 [데이터 소스 연결 및 가상 프라이빗 클라우드 액세스 권한 관리](application-data-sources-and-vpc.md) 단원을 참조하십시오.
+ 팀을 위한 워크스페이스를 생성합니다. 자세한 내용은 [Amazon OpenSearch Service 워크스페이스 사용](application-workspaces.md) 단원을 참조하십시오.
+ 키 사용에 대한 AWS CloudTrail 모니터링을 설정합니다. 자세한 내용은 [고객 관리형 키 사용 모니터링](#application-encryption-cmk-monitoring) 단원을 참조하십시오.

# 를 사용하여 SAML 페더레이션 활성화 AWS Identity and Access Management
<a name="application-enable-SAML-identity-federation"></a>

OpenSearch UI는 많은 ID 공급자가 사용하는 개방형 표준인 Security Assertion Markup Language 2.0(SAML)을 지원합니다. 이렇게 하면 AWS Identity and Access Management (IAM)와의 ID 페더레이션이 활성화됩니다. 이 지원을 통해 계정 또는 조직의 사용자는 IAM 역할을 맡아 OpenSearch UI에 직접 액세스할 수 있습니다. 최종 사용자를 위한 ID 공급자(IdP) 시작 Single Sign-On 환경을 생성할 수 있습니다. 여기서 최종 사용자는 외부 ID 공급자에서 인증하고 OpenSearch UI의 정의된 페이지로 직접 라우팅될 수 있습니다. OpenSearch UI 및 관련 데이터 소스에 액세스할 수 있는 권한이 서로 다른 다양한 IAM 역할을 맡도록 최종 사용자 또는 그룹을 구성하여 세분화된 액세스 제어를 구현할 수도 있습니다.

이 주제에서는 OpenSearch UI에서 SAML 사용을 구성하기 위한 단계별 지침을 제공합니다. 이 절차에서는 Okta 자격 증명 및 액세스 관리 애플리케이션을 구성하는 단계를 예로 사용합니다. Azure Active Directory, Ping 등, 다른 ID 공급자의 구성 단계는 비슷합니다.

**Topics**
+ [1단계: ID 공급자 애플리케이션 설정(Okta)](#SAML-identity-federation-step-1)
+ [2단계: Okta에 대한 AWS 구성 설정](#SAML-identity-federation-step-2)
+ [3단계: IAM에서 Amazon OpenSearch Service 액세스 정책 생성](#SAML-identity-federation-step-3)
+ [4단계: SAML을 사용하여 ID 공급자가 시작한 Single Sign-On 환경 확인](#SAML-identity-federation-step-4)
+ [5단계: SAML 속성 기반 세분화된 액세스 제어 구성](#SAML-identity-federation-step-5)

## 1단계: ID 공급자 애플리케이션 설정(Okta)
<a name="SAML-identity-federation-step-1"></a>

OpenSearch UI에서 SAML을 사용하기 위한 첫 번째 단계는 ID 공급자를 설정하는 것입니다.

**작업 1: Okta 사용자 생성**

1. 관리 권한이 있는 사용자로 [https://login.okta.com/](https://login.okta.com/) Okta 조직에 로그인합니다.

1. 관리자 콘솔의 탐색 창에 있는 **디렉터리**에서 **사람**을 선택합니다.

1. **사람 추가**(Add Person)를 선택합니다.

1. **이름**에 사용자의 이름을 입력합니다.

1. **성**에 사용자의 성을 입력합니다.

1. **사용자 이름**에 이메일 형식으로 사용자의 사용자 이름을 입력합니다.

1. **암호를 설정합니다**를 선택하고 암호를 입력합니다..

1. (선택 사항) 사용자가 처음 로그인할 때 암호를 변경하지 않도록 하려면 **사용자가 처음 로그인할 때 암호를 변경해야 함** 상자를 선택 취소합니다.

1. **저장**을 선택합니다.

**작업 2: 그룹 생성 및 할당**

1. 관리 권한이 있는 사용자로 [https://login.okta.com/](https://login.okta.com/) Okta 조직에 로그인합니다.

1. 관리자 콘솔의 탐색 창에 있는 **디렉터리**에서 **그룹**을 선택합니다.

1. **그룹 추가**를 선택합니다.

1. 그룹 이름을 입력하고 **저장**을 선택합니다.

1. 새로 생성된 그룹을 선택한 다음 **사용자 할당**을 선택합니다.

1. 더하기 기호(**\$1**)를 선택한 다음 **완료**를 선택합니다.

1. (선택 사항) 1\$16단계를 반복하여 그룹을 더 추가합니다.

**작업 3: Okta 애플리케이션 생성**

1. 관리 권한이 있는 사용자로 [https://login.okta.com/](https://login.okta.com/) Okta 조직에 로그인합니다.

1. 관리자 콘솔의 탐색 창에 있는 **애플리케이션**에서 **애플리케이션**을 선택합니다.

1.  **앱 통합 생성(Create App Integration)**을 선택합니다.

1. 로그인 방법으로 SAML 2.0을 선택한 후 **다음**을 선택합니다.

1.  앱 통합의 이름(예: **OpenSearch\$1UI**)을 입력한 후 **다음**을 선택합니다.

1. 앱에 다음 값을 입력합니다. 다른 값은 변경할 필요가 없습니다.

   1.  1. **Single Sign On URL**에 상용 AWS 리전 **https://signin.aws.amazon.com/saml** 또는 해당 리전에 해당하는 URL을 입력합니다.

   1. 2. **대상 URI(SP 엔터티 ID)**에 **urn:amazon:webservices**를 입력합니다.

   1. 3. **이름 ID 형식**에 **EmailAddress**를 입력합니다.

1. **다음**을 선택합니다.

1. **내부 앱을 추가하는 Okta 고객임**을 선택한 다음 **생성한 내부 앱입니다**를 선택합니다.

1. **마침**을 클릭합니다.

1. **할당**을 선택한 다음 **할당**을 선택합니다.

1. **그룹에 할당**을 선택한 다음 추가하려는 그룹 옆에 있는 **할당**을 선택합니다.

1. **완료**를 선택합니다.

**작업 4: Okta 고급 구성 설정**

사용자 지정 SAML 애플리케이션을 생성한 후 다음 단계를 완료합니다.

1. 관리 권한이 있는 사용자로 [https://login.okta.com/](https://login.okta.com/) Okta 조직에 로그인합니다.

   관리자 콘솔의 **일반** 영역에 있는 **SAML 설정**에서 **편집**을 선택합니다.

1. **다음**을 선택합니다.

1. 다음 형식을 사용하여 **기본 릴레이 상태**를 OpenSearch UI 엔드포인트로 설정합니다.

   `https://region.console.aws.amazon.com/aos/home?region=region#opensearch/applications/application-id/redirectToDashboardURL`. 

   다음은 예제입니다.

   `https://us-east-2.console.aws.amazon.com/aos/home?region=us-east-2#opensearch/applications/abc123def4567EXAMPLE/redirectToDashboardURL` 

1. **속성 문(선택 사항)**에 다음 속성을 추가합니다.

   1. **역할** 속성을 사용하여 IAM 역할 및 ID 공급자를 쉼표로 구분된 형식으로 제공합니다. AWS 구성을 설정할 때 이후 단계에서 동일한 IAM 역할 및 자격 증명 공급자를 사용합니다.

   1. **RoleSessionName**의 **user.login**을 설정합니다. 이는 역할을 맡을 때 발급되는 임시 자격 증명의 식별자로 사용됩니다.

   참조용:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/application-enable-SAML-identity-federation.html)

1. 속성을 추가하고 **다음**을 선택한 후 **완료**를 선택합니다.

속성은 다음 이미지에 표시된 것과 비슷한 형식이어야 합니다. **기본 릴레이 상태** 값은 Okta에서 Single Sign-On 검증을 완료한 후 계정 또는 조직의 최종 사용자를 위한 랜딩 페이지를 정의하는 URL입니다. OpenSearch UI의 모든 페이지로 설정한 다음 해당 URL을 의도한 최종 사용자에게 제공할 수 있습니다.

![\['SAML 2.0' 영역에는 애플리케이션의 기본 릴레이 상태 URL 및 메타데이터 URL이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/ui-saml-2.0-area-okta.png)


## 2단계: Okta에 대한 AWS 구성 설정
<a name="SAML-identity-federation-step-2"></a>

다음 작업을 완료하여 Okta에 대한 AWS 구성을 설정합니다.

**작업 1: Okta 정보 수집**

이 단계에서는 나중에 AWS에서 구성할 수 있도록 Okta 정보를 수집해야 합니다.

1. 관리 권한이 있는 사용자로 [https://login.okta.com/](https://login.okta.com/) Okta 조직에 로그인합니다.

1. **로그인** 탭의 페이지 오른쪽 하단에서 **SAML 설정 지침 보기**를 선택합니다.

1. **ID 공급자 Single Sign-On**의 값을 기록해 둡니다. [SQL Workbench/J](https://www.sql-workbench.eu/)와 같은 서드 파티 SQL 클라이언트에 연결할 때 이 URL을 사용할 수 있습니다.

1. 블록 4에서 ID 공급자 메타데이터를 사용한 다음 메타데이터 파일을 .xml 형식(예: `metadata.xml`)으로 저장합니다.

**작업 2: IAM 공급자 생성**

IAM 공급자를 생성하려면 다음 단계를 완료합니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. 탐색 창의 **액세스 관리**에서 **ID 공급자**를 선택합니다.

1. **공급자 추가**를 선택합니다.

1. **공급자 유형**에서 **SAML**을 선택합니다.

1. **공급자 이름**에 이름을 입력합니다.

1. **메타데이터 문서**에서 **파일 선택**을 선택하고 이전에 다운로드한 메타데이터 파일(.xml)을 업로드합니다.

1. **공급자 추가**를 선택합니다.

**작업 3: IAM 역할 생성**

 AWS Identity and Access Management 역할을 생성하려면 다음 단계를 완료합니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. 탐색 창의 **액세스 관리**에서 **역할**을 선택합니다.

1. **역할 생성**을 선택합니다.

1. **신뢰할 수 있는 엔티티 유형**에서 **SAML 2.0 페더레이션**을 선택합니다.

1. **SAML 2.0 기반 공급자**의 경우 앞서 생성한 ID 공급자를 선택합니다.

1. **프로그래밍 방식 및 AWS Management Console 액세스 허용**을 선택합니다.

1. **다음**을 선택합니다.

1. **권한 정책** 목록에서 AWS 관리형 정책 OpenSearch Service 권한을 부여하는 정책의 확인란을 선택합니다. **AmazonOpenSearchServiceFullAccess**

1. **다음**을 선택합니다.

1. **검토** 영역에서 **역할 이름**에 역할의 이름을 입력합니다(예: **oktarole**).

1. (선택 사항) **설명**에 역할의 용도에 대한 간략한 설명을 입력합니다.

1. **역할 생성**을 선택합니다.

1. 방금 생성한 역할로 이동하여 **신뢰 관계** 탭을 선택한 다음 **신뢰 정책 편집**을 선택합니다.

1. **문 편집** 창의 **STS에 대한 작업 추가**에서 **TagSession**의 확인란을 선택합니다.

1. **정책 업데이트**를 선택합니다.

## 3단계: IAM에서 Amazon OpenSearch Service 액세스 정책 생성
<a name="SAML-identity-federation-step-3"></a>

OpenSearch 액세스 제어를 위해 IAM 역할을 구성하는 방법을 알아봅니다. IAM 역할을 사용하면 Okta 사용자 그룹이 OpenSearch 리소스에 액세스할 수 있도록 세분화된 액세스 제어를 구현할 수 있습니다. 이 주제에서는 2개의 예시 그룹을 사용하는 IAM 역할 기반 구성을 보여줍니다.

------
#### [ Sample group: Alice ]

요청:

```
GET _plugins/_security/api/roles/alice-group
```

결과:

```
{
  "alice-group": {
    "reserved": false,
    "hidden": false,
    "cluster_permissions": [
      "unlimited"
    ],
    "index_permissions": [
      {
        "index_patterns": [
          "alice*"
        ],
        "dls": "",
        "fls": [],
        "masked_fields": [],
        "allowed_actions": [
          "indices_all"
        ]
      }
    ],
    "tenant_permissions": [
      {
        "tenant_patterns": [
          "global_tenant"
        ],
        "allowed_actions": [
          "kibana_all_write"
        ]
      }
    ],
    "static": false
  }
}
```

------
#### [ Sample group: Bob ]

요청:

```
GET _plugins/_security/api/roles/bob-group
```

결과:

```
{
  "bob-group": {
    "reserved": false,
    "hidden": false,
    "cluster_permissions": [
      "unlimited"
    ],
    "index_permissions": [
      {
        "index_patterns": [
          "bob*"
        ],
        "dls": "",
        "fls": [],
        "masked_fields": [],
        "allowed_actions": [
          "indices_all"
        ]
      }
    ],
    "tenant_permissions": [
      {
        "tenant_patterns": [
          "global_tenant"
        ],
        "allowed_actions": [
          "kibana_all_write"
        ]
      }
    ],
    "static": false
  }
}
```

------

다음 예와 같이 백엔드 역할 매핑을 사용하여 Amazon OpenSearch Service 도메인 역할을 IAM 역할에 매핑할 수 있습니다.

```
{
  "bob-group": {
    "hosts": [],
    "users": [],
    "reserved": false,
    "hidden": false,
    "backend_roles": [
      "arn:aws:iam::111222333444:role/bob-group"
    ],
    "and_backend_roles": []
  },
  "alice-group": {
    "hosts": [],
    "users": [],
    "reserved": false,
    "hidden": false,
    "backend_roles": [
      "arn:aws:iam::111222333444:role/alice-group"
    ],
    "and_backend_roles": []
  }
}
```

## 4단계: SAML을 사용하여 ID 공급자가 시작한 Single Sign-On 환경 확인
<a name="SAML-identity-federation-step-4"></a>

**기본 릴레이 상태**의 URL을 열어 Okta 인증 페이지를 엽니다. 최종 사용자의 자격 증명을 입력합니다. 자동으로 OpenSearch UI로 리디렉션됩니다.

다음 이미지와 같이 탐색 창 하단의 사용자 아이콘을 선택하여 현재 자격 증명을 확인할 수 있습니다.

![\[Okta '설정 및 설치' 페이지에서 사용자 아이콘을 선택하면 현재 사용자의 자격 증명이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/ui-okta-user-icon.png)


탐색 패널 하단의 개발자 도구에 액세스하고 콘솔에서 쿼리를 실행하여 사용자의 세분화된 액세스 제어 권한을 확인할 수도 있습니다. 다음은 샘플 쿼리입니다.

------
#### [ Example 1: Displays information about the current user ]

요청:

```
GET _plugins/_security/api/account
```

결과:

```
{
  "user_name": "arn:aws:iam::XXXXXXXXXXXX:role/bob-group",
  "is_reserved": false,
  "is_hidden": false,
  "is_internal_user": false,
  "user_requested_tenant": null,
  "backend_roles": [
    "arn:aws:iam::XXXXXXXXXXXX:role/bob-group"
  ],
  "custom_attribute_names": [],
  "tenants": {
    "global_tenant": true,
    "arn:aws:iam::XXXXXXXXXXXX:role/bob-group": true
  },
  "roles": [
    "bob-group"
  ]
}
```

------
#### [ Example 2: Displays actions permitted for a user ]

요청:

```
GET bob-test/_search
```

결과:

```
{
  "took": 390,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
      {
        "_index": "bob-test",
        "_id": "ui01N5UBCIHpjO8Jlvfy",
        "_score": 1,
        "_source": {
          "title": "Your Name",
          "year": "2016"
        }
      }
    ]
  }
}
```

------
#### [ Example 3: Displays actions not permitted for a user ]

요청:

```
GET alice-test
```

결과:

```
{
  "error": {
    "root_cause": [
      {
        "type": "security_exception",
        "reason": "no permissions for [indices:admin/get] and User [name=arn:aws:iam::111222333444:role/bob-group, backend_roles=[arn:aws:iam::111222333444:role/bob-group], requestedTenant=null]"
      }
    ],
    "type": "security_exception",
    "reason": "no permissions for [indices:admin/get] and User [name=arn:aws:iam::111222333444:role/bob-group, backend_roles=[arn:aws:iam::111222333444:role/bob-group], requestedTenant=null]"
  },
  "status": 403
}
```

------

## 5단계: SAML 속성 기반 세분화된 액세스 제어 구성
<a name="SAML-identity-federation-step-5"></a>

Amazon OpenSearch Service에서는 SAML과 함께 세분화된 액세스 제어를 사용하여 ID 공급자의 사용자 및 그룹을 OpenSearch 세분화된 액세스 제어 사용자 및 역할에 동적으로 매핑할 수 있습니다. 이러한 역할의 범위를 특정 OpenSearch 도메인 및 서버리스 컬렉션으로 지정하고 인덱스 수준 권한 및 문서 수준 보안을 정의할 수 있습니다.

**참고**  
세분화된 액세스 제어에 대한 자세한 내용은 [Amazon OpenSearch Service에서 세분화된 액세스 제어](fgac.md) 섹션을 참조하세요.

**Topics**
+ [세분화된 액세스 제어를 위한 SAML 속성](#saml-fgac-key-attributes)
+ [작업 1: 세분화된 액세스 제어를 위한 Okta 구성](#configure-okta-fgac)
+ [작업 2: OpenSearch 도메인에서 SAML 구성](#configure-opensearch-domain-fgac)
+ [작업 3: OpenSearch Serverless 컬렉션에서 SAML 구성](#saml-configure-collections)

### 세분화된 액세스 제어를 위한 SAML 속성
<a name="saml-fgac-key-attributes"></a>

**subjectKey**  
인증할 사용자를 식별하는 이메일, 사용자 이름 등의 고유한 사용자 속성에 매핑됩니다.

**rolesKey**  
권한 부여를 위한 역할 또는 권한을 결정하는 IdP의 그룹 또는 역할 속성에 매핑됩니다.

### 작업 1: 세분화된 액세스 제어를 위한 Okta 구성
<a name="configure-okta-fgac"></a>

**세분화된 액세스 제어를 위한 Okta를 구성하려면**

1. **속성 문** 섹션에서 OpenSearch 사용자 보안 위탁자에 대한 새 속성을 추가합니다.
   + 이름: `UserName`
   + 값: `${user-email}`

   이 속성은 인증을 위한 OpenSearch 세분화된 액세스 제어 구성에서 **제목 키**로 사용됩니다.

1. **그룹 속성 문** 섹션에서 역할의 그룹 속성을 추가합니다.
   + 이름: `groups`
   + 필터: `OpenSearch_xxx`

   이 속성은 권한 부여를 위해 그룹을 OpenSearch 세분화된 액세스 제어 역할에 매핑하기 위한 역할 **키**로 사용됩니다.

### 작업 2: OpenSearch 도메인에서 SAML 구성
<a name="configure-opensearch-domain-fgac"></a>

**OpenSearch 도메인에서 SAML을 구성하려면**

1.  AWS 관리 콘솔에서 OpenSearch UI 사용자에 대해 세분화된 액세스 제어를 활성화하려는 OpenSearch Service 도메인을 식별합니다.

1. 특정 도메인의 세부 정보 페이지로 이동합니다.

1. **보안 구성** 탭을 선택하고 **편집**을 클릭합니다.

1. **IAM 페더레이션을 통한 SAML**을 확장합니다.

1. Okta에서 정의한 `subjectKey`와 `roleKey`를 입력합니다.

1. **변경 내용 저장**을 선택합니다.

 AWS CLI를 사용하여 세분화된 액세스 제어를 구성할 수도 있습니다.

```
aws opensearch create-domain \
--domain-name testDomain \
--engine-version OpenSearch_1.3 \
--cluster-config InstanceType=r5.xlarge.search,InstanceCount=1,DedicatedMasterEnabled=false,ZoneAwarenessEnabled=false,WarmEnabled=false \
--access-policies '{"Version": "2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:*","Resource":"arn:aws:es:us-east-1:12345678901:domain/neosaml10/*"}]}' \
--domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
--node-to-node-encryption-options '{"Enabled":true}' \
--encryption-at-rest-options '{"Enabled":true}' \
--advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \
--ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \
--no-verify-ssl \
--endpoint-url https://es.us-east-1.amazonaws.com \
--region us-east-1
```

기존 도메인을 업데이트하려면:

```
aws opensearch update-domain-config \
--domain-name testDomain \
--advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \
--ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \
--no-verify-ssl \
--endpoint-url https://es.us-east-1.amazonaws.com \
--region us-east-1
```

### 작업 3: OpenSearch Serverless 컬렉션에서 SAML 구성
<a name="saml-configure-collections"></a>

**OpenSearch Serverless에서 SAML 기반 세분화된 액세스 제어를 구성하려면**

1. 를 열고 Amazon OpenSearch Service로 AWS Management Console 이동합니다.

1. 탐색 창의 **서버리스**에서 **보안**을 선택한 다음 **인증**을 선택합니다.

1. **IAM 페더레이션** 섹션에서 **편집**을 선택합니다.

   이 구성을 사용하여 SAML 속성 기반 세분화된 액세스 제어를 제어할 수 있습니다. IAM 페더레이션은 기본적으로 비활성화되어 있습니다.

1. **IAM 페더레이션 활성화**를 선택합니다.

1. Okta에서 정의한 `subjectKey` 및 `roleKey` 값을 입력합니다.

   자세한 내용은 [세분화된 액세스 제어를 위한 SAML 속성](#saml-fgac-key-attributes) 단원을 참조하십시오.

1. **저장**을 선택합니다.

1. 탐색 창의 **서버리스**에서 **데이터 액세스 정책**을 선택합니다.

1. 기존 정책을 업데이트하거나 새 정책을 생성합니다.

1. 규칙을 확장하고 **위탁자 추가**를 선택한 다음 **IAM 페더레이션 사용자 및 그룹**을 선택합니다.

1. 필요한 위탁자를 추가하고 **저장**을 선택합니다.

1. **권한 부여**를 선택합니다.

1. 이 규칙에서 다음을 수행합니다.
   + 선택한 위탁자에 대해 정의할 권한을 선택합니다.
   + 권한을 적용할 컬렉션을 지정합니다.
   + 인덱스 수준 권한을 정의합니다(선택 사항).
**참고**  
여러 규칙을 생성하여 여러 위탁자 그룹에 서로 다른 권한을 할당할 수도 있습니다.

1. 완료하였으면 **저장**을 선택합니다.

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

또는 CLI를 사용하여 아래와 같이 컬렉션에 대한 보안 구성을 생성할 수 있습니다.

```
aws opensearchserverless create-security-config --region "region"  --type iamfederation --name "configuration_name" --description "description" --iam-federation-options '{"groupAttribute":"GroupKey","userAttribute":"UserKey"}'
```

# 데이터 소스 연결 및 가상 프라이빗 클라우드 액세스 권한 관리
<a name="application-data-sources-and-vpc"></a>

이 섹션의 절차를 사용하여 데이터 소스 연결을 관리하고 가상 프라이빗 클라우드(VPC)에 필요한 액세스 권한을 구성합니다.

**Topics**
+ [데이터 소스와 OpenSearch UI 애플리케이션 연결](#application-data-source-association)
+ [VPC의 도메인에 대한 액세스 관리](#application-manage-vpc-access)
+ [VPC의 OpenSearch Serverless 컬렉션에 대한 액세스 구성](#application-configure-vpc-access-serverless-connections)

## 데이터 소스와 OpenSearch UI 애플리케이션 연결
<a name="application-data-source-association"></a>

OpenSearch UI 애플리케이션을 생성한 후 콘솔 또는를 사용하여 하나 이상의 데이터 소스와 AWS CLI 연결할 수 있습니다. 그러면 최종 사용자가 검색, 대시보드 작업 등을 위해 이러한 데이터 소스에서 데이터를 검색할 수 있게 됩니다.

### 데이터 소스와 OpenSearch UI 애플리케이션 연결(콘솔)
<a name="application-data-source-association-console"></a>

**콘솔을 사용하여 데이터 소스를 OpenSearch UI 애플리케이션과 연결하려면**

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

1. **OpenSearch UI(Dashboards)**를 선택한 다음 OpenSearch UI 애플리케이션의 이름을 선택합니다.

1. **연결된 데이터 소스** 영역에서 **데이터 소스 관리**를 선택합니다.

1. OpenSearch 도메인 및 컬렉션 중에서 애플리케이션과 연결할 항목을 선택합니다.
**작은 정보**  
원하는 데이터 소스를 찾을 수 없는 경우 관리자에게 문의하여 필요한 권한을 부여받으세요. 자세한 내용은 [IAM Identity Center 인증을 사용하는 애플리케이션을 생성할 권한(선택 사항)](application-getting-started.md#prerequisite-permissions-idc) 단원을 참조하십시오.

1. **다음**을 선택한 후 **저장**을 선택합니다.

데이터 소스를 애플리케이션에 연결하면 애플리케이션 세부 정보 페이지에 **애플리케이션 시작** 버튼이 활성화됩니다. **애플리케이션 시작**을 선택하여, 워크스페이스를 생성하고 관리할 수 있는 ** OpenSearch 시작** 페이지를 열 수 있습니다.

워크스페이스 작업에 대한 자세한 내용은 [Amazon OpenSearch Service 워크스페이스 사용](application-workspaces.md) 섹션을 참조하세요.

## VPC의 도메인에 대한 액세스 관리
<a name="application-manage-vpc-access"></a>

VPC의 OpenSearch 도메인이 애플리케이션과 연결된 경우, VPC 관리자가 콘솔 또는 AWS CLI를 사용하여 OpenSearch UI와 VPC 간의 액세스를 승인해야 합니다.

### VPC의 도메인에 대한 액세스 관리(콘솔)
<a name="application-manage-vpc-access-console"></a>

**AWS Management Console을 사용하여 VPC 도메인에 대한 액세스를 구성하려면:**

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

1. 왼쪽 탐색 창에서 **도메인**을 선택하고 VPC 도메인의 이름을 선택합니다.

   -또는-

   **도메인 생성**을 선택한 다음 도메인에 대한 세부 정보를 구성합니다.

1. **VPC 엔드포인트** 탭을 선택한 다음 **위탁자 권한 부여**를 선택합니다.

1. **보안 주체 권한 부여** 대화 상자의 **다른 AWS 서비스에서 보안 주체 권한 부여를** 선택한 다음 목록에서 **OpenSearch 애플리케이션(대시보드)**을 선택합니다.

1. **Authorize**를 선택합니다.

### VPC의 도메인에 대한 액세스 관리(AWS CLI)
<a name="application-manage-vpc-access-cli"></a>

**를 사용하여 VPC 도메인에 권한을 부여하려면 AWS CLI**  
를 사용하여 VPC 도메인을 승인하려면 다음 명령을 AWS CLI실행합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

```
aws opensearch authorize-vpc-endpoint-access \
 --domain-name domain-name \
 --service application.opensearchservice.amazonaws.com \
 --region region-id
```

**콘솔을 사용하여 VPC 도메인 연결을 취소하려면**

연결이 더 이상 필요하지 않은 경우 VPC 도메인 소유자는 다음 절차를 사용하여 액세스를 취소할 수 있습니다.

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

1. 왼쪽 탐색 창에서 **도메인**을 선택하고 VPC 도메인의 이름을 선택합니다.

1. **VPC 엔드포인트** 탭을 선택한 다음 **OpenSearch 애플리케이션(대시보드)** 행의 버튼을 선택합니다.

1. **액세스 취소**를 선택합니다.

**를 사용하여 VPC 도메인 연결을 취소하려면 AWS CLI**  
OpenSearch UI 애플리케이션과의 VPC 도메인 연결을 취소하려면 다음 명령을 실행합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

```
aws opensearch revoke-vpc-endpoint-access \
    --domain-name domain-name \
    --service application.opensearchservice.amazonaws.com \
    --region region-id
```

## VPC의 OpenSearch Serverless 컬렉션에 대한 액세스 구성
<a name="application-configure-vpc-access-serverless-connections"></a>

VPC의 Amazon OpenSearch Serverless 컬렉션이 애플리케이션과 연결되어 있는 경우, VPC 관리자는 새 네트워크 정책을 생성하고 컬렉션에 연결하여 액세스를 승인할 수 있습니다.

### VPC의 OpenSearch Serverless 컬렉션에 대한 액세스 구성(콘솔)
<a name="application-configure-vpc-access-serverless-connections-console"></a>

**콘솔을 사용하여 VPC의 OpenSearch Serverless 컬렉션에 대한 액세스를 구성하려면**

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

1. 왼쪽 탐색 창에서 **네트워크 정책**을 선택하고 네트워크 정책의 이름을 선택한 다음 **편집**을 선택합니다.

   -또는-

   **네트워크 정책 생성**을 선택한 다음 정책에 대한 세부 정보를 구성합니다.

1. **액세스 유형** 영역에서 **프라이빗(권장)**을 선택한 다음 **AWS 서비스 프라이빗 액세스**를 선택합니다.

1. 검색 필드에서 **서비스**를 선택한 다음 `application.opensearchservice.amazonaws.com`을 선택합니다.

1. **리소스 유형** 영역에서 **OpenSearch 엔드포인트에 대한 액세스 활성화** 상자를 선택합니다.

1. **검색 컬렉션 또는 특정 접두사 용어 입력**의 검색 필드에서 **컬렉션 이름**을 선택한 다음 네트워크 정책과 연결할 컬렉션의 이름을 입력하거나 선택합니다.

1. 새 네트워크 정책에 대해 **생성** 또는 기존 네트워크 정책에 대해 **업데이트**를 선택합니다.

### VPC의 OpenSearch Serverless 컬렉션에 대한 액세스 구성(AWS CLI)
<a name="application-configure-vpc-access-serverless-connections-cli"></a>

**를 사용하여 VPC의 OpenSearch Serverless 컬렉션에 대한 액세스를 구성하려면 AWS CLI**

1. 다음과 유사한 .json 파일을 생성합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

   ```
   {
       "Description" : "policy-description",
       "Rules": [{
          "ResourceType" : "collection",
           "Resource" : ["collection/collection_name"]
        }],
       "SourceServices" : [
             "application.opensearchservice.amazonaws.com"
         ],
         "AllowFromPublic" : false
   }
   ```

1. OpenSearch UI 애플리케이션과 함께 작동하도록 VPC의 컬렉션에 대한 네트워크 정책을 생성하거나 업데이트합니다.

------
#### [ Create a network policy ]

   다음 명령을 실행합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

   ```
   aws opensearchserverless create-security-policy \
       --type network  \
       --region region \
       --endpoint-url endpoint-url \
       --name network-policy-name \
       --policy file:/path_to_network_policy_json_file
   ```

   이 명령은 다음과 유사한 정보를 반환합니다.

   ```
   {
       "securityPolicyDetail": {
           "createdDate": ******,
           "lastModifiedDate": ******,
           "name": "network-policy-name",
           "policy": [
               {
                   "SourceVPCEs": [],
                   "AllowFromPublic": false,
                   "Description": "",
                   "Rules": [
                       {
                           "Resource": [
                               "collection/network-policy-name"
                           ],
                           "ResourceType": "collection"
                       }
                   ],
                   "SourceServices": [
                       "application.opensearchservice.amazonaws.com"
                   ]
               }
           ],
           "policyVersion": "******",
           "type": "network"
       }
   }
   ```

------
#### [ Update a network policy ]

   다음 명령을 실행합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

   ```
   aws opensearchserverless update-security-policy \
       --type network  \
       --region region \
       --endpoint-url endpoint-url \
       --name network-policy-name \
       --policy-version "policy_version_from_output_of_network_policy_creation" \
       --policy file:/path_to_network_policy_json_file
   ```

   이 명령은 다음과 유사한 정보를 반환합니다.

   ```
   {
       "securityPolicyDetail": {
           "createdDate": ******,
           "lastModifiedDate": ******,
           "name": "network-policy-name",
           "policy": [
               {
                   "SourceVPCEs": [],
                   "AllowFromPublic": false,
                   "Description": "",
                   "Rules": [
                       {
                           "Resource": [
                               "collection/network-policy-name"
                           ],
                           "ResourceType": "collection"
                       }
                   ],
                   "SourceServices": [
                       "application.opensearchservice.amazonaws.com"
                   ]
               }
           ],
           "policyVersion": "******",
           "type": "network"
       }
   }
   ```

------

# Amazon OpenSearch Service 워크스페이스 사용
<a name="application-workspaces"></a>

Amazon OpenSearch Service는 여러 사용 사례별 워크스페이스 생성을 지원합니다. 각 워크스페이스는 관찰성, 보안 분석 및 검색과 같은 주요 사용 사례에 대해 엄선된 환경을 제공합니다. 또한 워크스페이스는 공동 작업자 관리를 지원하므로, 의도한 공동 작업자와만 워크스페이스를 공유하고 각 공동 작업자의 권한을 관리할 수 있습니다.

## OpenSearch UI 애플리케이션 워크스페이스 생성
<a name="application-workspaces-create"></a>

OpenSearch UI 애플리케이션을 생성하여 데이터 소스와 연결하고 애플리케이션에 대한 사용자 권한을 구성한 후, OpenSearch UI 애플리케이션을 시작하여 워크스페이스를 생성할 수 있습니다.

워크스페이스 생성을 시작하려면 애플리케이션 세부 정보 페이지에서 **애플리케이션 시작** 버튼을 선택하거나, OpenSearch UI 애플리케이션 URL을 사용하여 새 브라우저 창에서 OpenSearch UI 애플리케이션 홈 페이지를 열 수 있습니다.

OpenSearch UI 애플리케이션은 워크스페이스를 생성하는 옵션을 제공하고, 사용 사례별로 분류된 홈 페이지의 모든 기존 워크스페이스를 나열합니다.

![\[콘솔의 '내 워크스페이스' 영역을 사용하여 Observability, Security analytics, Search, Essentials, Analytics라는 5가지 유형의 워크스페이스를 생성할 수 있습니다. '내 워크스페이스' 영역에서 기존 워크스페이스를 모두 볼 수도 있습니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/workspaces.png)


지원되는 워크스페이스 유형에 대한 자세한 내용은 [워크스페이스 유형](#application-workspaces-types) 섹션을 참조하세요.

## 워크스페이스 프라이버시 및 공동 작업자
<a name="application-workspaces-privacy-and-collaborators"></a>

워크스페이스의 프라이버시 설정을 모든 사용자의 기본 권한 수준으로 정의할 수 있습니다. 워크스페이스를 생성하는 동안 이 작업을 수행하거나 기존 워크스페이스를 수정할 수 있습니다(워크스페이스 **공동 작업자** 탭에서). 3가지 프라이버시 옵션 중에서 선택할 수 있습니다.
+ **공동 작업자에게 비공개 **- 워크스페이스에 명시적으로 추가하는 공동 작업자만 워크스페이스에 액세스할 수 있습니다. 각 공동 작업자의 권한 수준을 정의할 수 있습니다.
+ ****누구나 볼 수 있음**** - OpenSearch UI 애플리케이션에 액세스할 수 있는 사람은 누구나 워크스페이스에 액세스하여 자산을 볼 수 있지만 워크스페이스를 변경할 수는 없습니다.
+ ****누구나 편집할 수 있음**** - OpenSearch UI 애플리케이션에 액세스할 수 있는 사람은 누구나 워크스페이스에 액세스하고, 워크스페이스의 자산을 보고, 워크스페이스의 자산을 변경할 수 있습니다.

워크스페이스 **공동 작업자** 탭에서 IAM 사용자 또는 역할 및 AWS IAM Identity Center 사용자를 워크스페이스의 공동 작업자로 추가할 수 있습니다. 공동 작업자에 대해 세 가지 수준의 권한을 선택할 수 있습니다.
+ **읽기 전용** - 공동 작업자가 워크스페이스의 자산만 볼 수 있습니다. **누구나 편집할 수 있음** 프라이버시 설정으로 워크스페이스가 구성된 경우 이 설정이 재정의됩니다.
+ **읽기 및 쓰기** - 공동 작업자가 워크스페이스에서 자산을 보고 편집할 수 있습니다. **누구나 볼 수 있음** 프라이버시 설정으로 워크스페이스가 구성된 경우 공동 작업자가 편집할 수 있습니다.
+ **관리자** - 공동 작업자가 설정을 업데이트하고 워크스페이스를 삭제할 수 있습니다. 공동 작업자가 워크스페이스 프라이버시 설정을 변경하고 공동 작업자를 관리할 수도 있습니다. 워크스페이스를 생성하는 사용자는 워크스페이스 관리자로 자동 할당됩니다.

## 워크스페이스 유형
<a name="application-workspaces-types"></a>

Amazon OpenSearch Service는 다섯 가지 워크스페이스 유형을 제공하며, 각 워크스페이스 유형에는 다양한 사용 사례별로 다양한 기능이 있습니다.
+ **Observability** 워크스페이스는 로그, 지표 및 추적 모니터링을 통해 시스템 상태, 성능 및 신뢰성에 대한 가시성을 보장하도록 설계되었습니다.
+ **Security Analytics** 워크스페이스는 시스템 및 데이터 전반의 잠재적 보안 위협과 취약성을 탐지하고 조사하도록 설계되었습니다.
+ **Search** 워크스페이스는 조직의 데이터 소스에서 관련 정보를 빠르게 찾고 탐색하도록 설계되었습니다.
+ **Essentials** 워크스페이스는 OpenSearch Serverless용 데이터 소스로 설계되었으며, 데이터를 분석하여 인사이트를 도출하고, 패턴과 추세를 식별하고, 데이터에 입각한 결정을 신속하게 내릴 수 있게 합니다. **Essentials** 워크스페이스에서는 조직의 데이터 소스 전반에 걸쳐 관련 정보를 찾고 탐색할 수 있습니다.
+ **Analytics**(모든 기능) 워크스페이스는 다목적 사용 사례를 위해 설계되었으며 OpenSearch Service UI(Dashboards)에서 제공되는 모든 기능을 지원합니다.

# 교차 리전 및 교차 계정 데이터 액세스
<a name="application-cross-region-cross-account"></a>

OpenSearch UI는 다양한 및의 OpenSearch 도메인에서 데이터에 액세스할 AWS 계정수 있도록 지원합니다 AWS 리전. 요구 사항에 따라 두 가지 접근 방식 중에서 선택할 수 있습니다. 다음 표에서는 두 가지 접근 방식을 비교합니다.

**참고**  
교차 계정 데이터 액세스와 교차 클러스터 검색은 모두 OpenSearch 도메인에서만 작동합니다. 두 접근 방식 모두 OpenSearch Serverless 컬렉션을 지원하지 않습니다.


| 속성 | 교차 계정 데이터 액세스 | 클러스터 간 검색 | 
| --- | --- | --- | 
| 기능 | OpenSearch UI에서 다른 계정의 도메인을 직접 데이터 소스로 연결 | 클러스터 간 검색 연결을 사용하여 연결된 도메인 간에 데이터 쿼리 | 
| 메커니즘 | 직접 액세스 - OpenSearch UI가 다른 계정의 대상 도메인에 직접 연결 | 간접 액세스 - 요청을 원격 도메인으로 릴레이하려면 OpenSearch UI와 동일한 계정의 로컬 도메인이 필요합니다. | 
| 크로스 계정 지원 | 예 | 예 | 
| 리전 간 지원 | 아니요 - 소스 도메인과 대상 도메인이 동일해야 합니다. AWS 리전 | 예 - 소스 도메인과 대상 도메인이 서로 다른에 있을 수 AWS 리전있습니다. | 
| 도메인 간 연합 데이터 | 아니요 - 각 도메인은 별도의 데이터 소스로 독립적으로 쿼리됩니다. | 예 - 단일 쿼리로 연결된 여러 도메인의 결과를 집계할 수 있습니다. | 
| 인증 방법 | IAM 및 AWS IAM Identity Center | IAM(세분화된 액세스 제어 포함) | 
| 설정 복잡성 | 하위 - 검증을 위해 교차 계정 IAM 역할 필요 | 더 높음 - 클러스터 간 연결, 두 도메인의 액세스 정책 및 세분화된 액세스 제어 필요 | 
| OpenSearch UI의 데이터 소스 가시성 | 각 교차 계정 도메인은 별도의 데이터 소스로 표시됩니다. | 원격 도메인은 로컬 소스 도메인의 연결 별칭을 통해 액세스됩니다. | 
| 원격 도메인에 대한 쓰기 액세스 | 예 - 대상 도메인의 액세스 정책에 의해 제어됩니다. | 아니요 - 클러스터 간 검색은 원격 도메인에 대한 읽기 전용 액세스를 제공합니다. | 

**Topics**
+ [OpenSearch 도메인에 대한 교차 계정 데이터 액세스](application-cross-account-data-access-domains.md)
+ [클러스터 간 검색](application-cross-cluster-search.md)

# OpenSearch 도메인에 대한 교차 계정 데이터 액세스
<a name="application-cross-account-data-access-domains"></a>

한 계정에서 OpenSearch UI 애플리케이션을 구성하여 다른 계정의 OpenSearch 도메인에 액세스할 수 있습니다. 교차 계정 데이터 소스를 사용하여 OpenSearch UI 애플리케이션을 생성할 때 대상 계정의 IAM 역할을 `iamRoleForDataSourceArn` 가리키는를 제공합니다. OpenSearch UI는이 역할을 수임하고를 호출하여 도메인 액세스 가능성을 확인하여 요청을 검증`es:DescribeDomain`합니다. 교차 계정 역할은 컨트롤 플레인 검증에만 사용됩니다. 데이터 영역 액세스는 대상 도메인의 액세스 정책에 의해 별도로 제어됩니다.

**샘플 코드**  
이 주제의 코드 예제는 설명을 위한 것입니다. 기본 기능을 보여주며 오류 처리, 보안 모범 사례 또는 프로덕션 지원 기능은 포함되지 않을 수 있습니다. 프로덕션 환경에서 샘플 코드를 사용하기 전에 특정 요구 사항을 충족하도록 샘플 코드를 검토 및 수정하고 환경에서 철저히 테스트합니다.

## 주요 개념
<a name="cross-account-key-concepts"></a>

소스 계정  
OpenSearch UI 애플리케이션을 호스팅 AWS 계정 하는 .

대상 계정  
OpenSearch 도메인 AWS 계정 이 있는 입니다.

교차 계정 역할  
컨트롤 플레인 검증에만 사용되는 대상 계정의 IAM 역할입니다. 이 역할에는 `es:DescribeDomain` 권한만 필요합니다.

IAM Identity Center 애플리케이션 역할  
IAM Identity Center 사용자 데이터 영역 액세스에 사용되는 소스 계정의 IAM 역할입니다.

## 사전 조건
<a name="cross-account-prerequisites"></a>

교차 계정 데이터 액세스를 설정하기 전에 다음이 있는지 확인합니다.
+ AWS CLI 설치 및 구성됨
+ 소스 및 대상 모두에 대한 액세스 AWS 계정
+ IAM Identity Center 흐름의 경우: AWS IAM Identity Center 조직 인스턴스

## 시나리오
<a name="cross-account-scenarios"></a>

인증 방법 및 도메인 구성과 일치하는 시나리오를 선택합니다.
+ [시나리오 1: 퍼블릭 도메인에 액세스하는 IAM 사용자](#cross-account-scenario-1)
+ [시나리오 2: 퍼블릭 도메인에 액세스하는 IAM Identity Center 사용자](#cross-account-scenario-2)
+ [시나리오 3: VPC 도메인에 액세스하는 IAM 사용자](#cross-account-scenario-3)
+ [시나리오 4: VPC 도메인에 액세스하는 IAM Identity Center 사용자](#cross-account-scenario-4)

## 시나리오 1: 퍼블릭 도메인에 액세스하는 IAM 사용자
<a name="cross-account-scenario-1"></a>

### 1단계: 교차 계정 IAM 역할 생성(대상 계정)
<a name="scenario-1-step-1"></a>

소스 계정이 도메인 검증을 위해 수임하도록 허용하는 IAM 역할을 대상 계정에 생성합니다.

**교차 계정 역할을 생성하려면**

1. 소스 계정이 역할을 수임하도록 허용하는 신뢰 정책을 생성합니다.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "AWS": "arn:aws:iam::source-account-id:root"
       },
       "Action": "sts:AssumeRole"
     }]
   }
   ```

1. 역할을 생성합니다.

   ```
   aws iam create-role \
     --role-name OpenSearchUIAccessRole \
     --assume-role-policy-document file://trust-policy.json
   ```

1. `es:DescribeDomain` 작업만 사용하여 권한 정책을 생성합니다.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": "es:DescribeDomain",
       "Resource": "arn:aws:es:region:target-account-id:domain/*"
     }]
   }
   ```

1. 역할에 권한 정책 연결:

   ```
   aws iam put-role-policy \
     --role-name OpenSearchUIAccessRole \
     --policy-name ValidationOnly \
     --policy-document file://permissions-policy.json
   ```

### 2단계: OpenSearch 도메인(대상 계정) 생성
<a name="scenario-1-step-2"></a>

세분화된 액세스 제어 및 암호화가 활성화된 대상 계정에서 OpenSearch 도메인을 생성합니다.

```
aws opensearch create-domain \
  --domain-name domain-name \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"admin","MasterUserPassword":"master-password"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:ESHttp*","Resource":"arn:aws:es:region:target-account-id:domain/domain-name/*"}]}' \
  --region region
```

계속하기 `Active` 전에 도메인 상태가 될 때까지 기다립니다.

### 3단계: OpenSearch UI 애플리케이션 생성(소스 계정)
<a name="scenario-1-step-3"></a>

교차 계정 데이터 소스를 사용하여 소스 계정에서 애플리케이션을 생성합니다.

```
aws opensearch create-application \
  --region region \
  --name "cross-account-iam-app" \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-name",
    "dataSourceDescription":"Cross-account domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'
```

### 4단계: 확인 및 액세스
<a name="scenario-1-step-4"></a>

애플리케이션 세부 정보를 검색하여 엔드포인트 URL을 가져옵니다.

```
aws opensearch get-application \
  --region region \
  --id application-id
```
+ 응답에서 애플리케이션 엔드포인트 URL로 이동합니다.
+ IAM 자격 증명으로 로그인합니다.
+ IAM 사용자는 자신의 자격 증명으로 데이터 영역 요청에 서명합니다.
+ 대상 도메인 액세스 정책은 사용자가 액세스할 수 있는 데이터를 제어합니다.

## 시나리오 2: 퍼블릭 도메인에 액세스하는 IAM Identity Center 사용자
<a name="cross-account-scenario-2"></a>

### 1단계: 교차 계정 IAM 역할 생성(대상 계정)
<a name="scenario-2-step-1"></a>

소스 계정이 도메인 검증을 위해 수임하도록 허용하는 IAM 역할을 대상 계정에 생성합니다.

**교차 계정 역할을 생성하려면**

1. 소스 계정이 역할을 수임하도록 허용하는 신뢰 정책을 생성합니다.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "AWS": "arn:aws:iam::source-account-id:root"
       },
       "Action": "sts:AssumeRole"
     }]
   }
   ```

1. 역할을 생성합니다.

   ```
   aws iam create-role \
     --role-name OpenSearchUIAccessRole \
     --assume-role-policy-document file://trust-policy.json
   ```

1. `es:DescribeDomain` 작업만 사용하여 권한 정책을 생성합니다.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": "es:DescribeDomain",
       "Resource": "arn:aws:es:region:target-account-id:domain/*"
     }]
   }
   ```

1. 역할에 권한 정책 연결:

   ```
   aws iam put-role-policy \
     --role-name OpenSearchUIAccessRole \
     --policy-name ValidationOnly \
     --policy-document file://permissions-policy.json
   ```

### 2단계: OpenSearch 도메인(대상 계정) 생성
<a name="scenario-2-step-2"></a>

대상 계정에서 OpenSearch 도메인을 생성합니다. 와 동일한 명령을 사용하지[2단계: OpenSearch 도메인(대상 계정) 생성](#scenario-1-step-2)만 소스 계정에서 IAM Identity Center 애플리케이션 역할을 허용하도록 액세스 정책을 업데이트합니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::source-account-id:role/NeoIdCAppRole"
    },
    "Action": "es:ESHttp*",
    "Resource": "arn:aws:es:region:target-account-id:domain/domain-name/*"
  }]
}
```

계속하기 `Active` 전에 도메인 상태가 될 때까지 기다립니다.

### 3단계: IAM Identity Center 애플리케이션에 대한 IAM 역할 생성(소스 계정)
<a name="scenario-2-step-3"></a>

OpenSearch UI가 IAM Identity Center 사용자 데이터 영역 액세스에 사용하는 소스 계정에서 IAM 역할을 생성합니다.

**IAM Identity Center 애플리케이션 역할을 생성하려면**

1. 신뢰 정책 생성:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       },
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:SetContext",
         "Condition": {
           "ForAllValues:ArnEquals": {
             "sts:RequestContextProviders": "arn:aws:iam::source-account-id:oidc-provider/portal.sso.region.amazonaws.com/apl/application-id"
           }
         }
       }
     ]
   }
   ```

1. 권한 정책 생성:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Sid": "OpenSearchDomain",
       "Effect": "Allow",
       "Action": ["es:ESHttp*"],
       "Resource": "*"
     }]
   }
   ```

1. 역할을 생성하고 정책을 연결합니다.

   ```
   aws iam create-role \
     --role-name NeoIdCAppRole \
     --assume-role-policy-document file://neoidc-trust-policy.json
   
   aws iam put-role-policy \
     --role-name NeoIdCAppRole \
     --policy-name NeoIdCAppPermissions \
     --policy-document file://neoidc-permissions-policy.json
   ```

### 4단계: IAM Identity Center를 사용하여 OpenSearch UI 애플리케이션 생성(소스 계정)
<a name="scenario-2-step-4"></a>

```
aws opensearch create-application \
  --region region \
  --name "cross-account-idc-app" \
  --iam-identity-center-options '{
    "enabled":true,
    "iamIdentityCenterInstanceArn":"arn:aws:sso:::instance/ssoins-instance-id",
    "iamRoleForIdentityCenterApplicationArn":"arn:aws:iam::source-account-id:role/NeoIdCAppRole"
  }' \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-name",
    "dataSourceDescription":"Cross-account domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'
```

### 5단계: IAM Identity Center 사용자 및 그룹 생성 및 할당
<a name="scenario-2-step-5"></a>

**IAM Identity Center 사용자 생성**  
다음 명령을 실행합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

```
aws identitystore create-user \
  --identity-store-id d-directory-id \
  --user-name user-email \
  --display-name "display-name" \
  --name Formatted=string,FamilyName=last-name,GivenName=first-name \
  --emails Value=user-email,Type=work,Primary=true
```

**IAM Identity Center 그룹 생성 및 사용자 추가**  
다음 명령을 실행합니다.

```
aws identitystore create-group \
  --identity-store-id d-directory-id \
  --display-name "OpenSearchUsers" \
  --description "Users with OpenSearch access"

aws identitystore create-group-membership \
  --identity-store-id d-directory-id \
  --group-id group-id \
  --member-id UserId=user-id
```

**애플리케이션에 사용자 또는 그룹 할당**  
다음 명령을 실행합니다.

```
aws sso-admin create-application-assignment \
  --application-arn "arn:aws:sso:::source-account-id:application/ssoins-instance-id/apl-application-id" \
  --principal-id user-id-or-group-id \
  --principal-type USER
```

**대상 도메인에서 백엔드 역할 매핑 구성**  
IAM Identity Center 그룹을 대상 도메인의 OpenSearch 보안 역할에 매핑합니다.

```
curl -XPUT "https://domain-endpoint/_plugins/_security/api/rolesmapping/all_access" \
  -u admin:master-password \
  -H 'Content-Type: application/json' \
  -d '{
    "backend_roles": ["group-id"],
    "hosts": [],
    "users": []
  }'
```

### 6단계: 확인 및 액세스
<a name="scenario-2-step-6"></a>

```
aws opensearch get-application \
  --region region \
  --id application-id
```
+ 애플리케이션 엔드포인트 URL로 이동합니다.
+ IAM Identity Center 사용자 자격 증명으로 로그인합니다.
+ IAM Identity Center 사용자의 데이터 요청은 교차 계정 역할이 아닌 IAM Identity Center 애플리케이션 역할로 서명됩니다.
+ 도메인의 백엔드 역할 매핑은 데이터 액세스 권한을 제어합니다.

## 시나리오 3: VPC 도메인에 액세스하는 IAM 사용자
<a name="cross-account-scenario-3"></a>

### 1단계: 교차 계정 IAM 역할 생성(대상 계정)
<a name="scenario-3-step-1"></a>

소스 계정이 도메인 검증을 위해 수임하도록 허용하는 IAM 역할을 대상 계정에 생성합니다.

**교차 계정 역할을 생성하려면**

1. 소스 계정이 역할을 수임하도록 허용하는 신뢰 정책을 생성합니다.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "AWS": "arn:aws:iam::source-account-id:root"
       },
       "Action": "sts:AssumeRole"
     }]
   }
   ```

1. 역할을 생성합니다.

   ```
   aws iam create-role \
     --role-name OpenSearchUIAccessRole \
     --assume-role-policy-document file://trust-policy.json
   ```

1. `es:DescribeDomain` 작업만 사용하여 권한 정책을 생성합니다.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": "es:DescribeDomain",
       "Resource": "arn:aws:es:region:target-account-id:domain/*"
     }]
   }
   ```

1. 역할에 권한 정책 연결:

   ```
   aws iam put-role-policy \
     --role-name OpenSearchUIAccessRole \
     --policy-name ValidationOnly \
     --policy-document file://permissions-policy.json
   ```

### 2단계: VPC(대상 계정) 설정
<a name="scenario-3-step-2"></a>

대상 계정에 VPC가 이미 있는 경우이 단계를 건너뜁니다.

```
# Create VPC
aws ec2 create-vpc \
  --cidr-block 10.0.0.0/16 \
  --region region

# Create subnet
aws ec2 create-subnet \
  --vpc-id vpc-id \
  --cidr-block 10.0.1.0/24 \
  --availability-zone regiona \
  --region region

# Create security group
aws ec2 create-security-group \
  --group-name opensearch-vpc-sg \
  --description "Security group for OpenSearch VPC domain" \
  --vpc-id vpc-id \
  --region region

# Allow inbound HTTPS
aws ec2 authorize-security-group-ingress \
  --group-id security-group-id \
  --protocol tcp \
  --port 443 \
  --cidr 10.0.0.0/16 \
  --region region
```

[VPC 도메인 생성](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html)에 대해 자세히 알아봅니다.

### 3단계: VPC 도메인 생성(대상 계정)
<a name="scenario-3-step-3"></a>

```
aws opensearch create-domain \
  --domain-name vpc-domain-name \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --vpc-options "SubnetIds=subnet-id,SecurityGroupIds=security-group-id" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"admin","MasterUserPassword":"master-password"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:ESHttp*","Resource":"arn:aws:es:region:target-account-id:domain/vpc-domain-name/*"}]}' \
  --region region
```

계속하기 `Active` 전에 도메인 상태가 될 때까지 기다립니다.

### 4단계: OpenSearch UI 서비스 보안 주체(대상 계정)에 대한 VPC 엔드포인트 권한 부여
<a name="scenario-3-step-4"></a>

**중요**  
이는 VPC 도메인에 고유한 중요한 단계입니다. OpenSearch UI 서비스는 VPC 엔드포인트에 액세스할 수 있는 명시적 권한이 있어야 합니다.

```
# Authorize the service principal
aws opensearch authorize-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --service "application.opensearchservice.amazonaws.com" \
  --region region

# Verify authorization
aws opensearch list-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --region region
```

예상 응답:

```
{
  "AuthorizedPrincipalList": [
    {
      "PrincipalType": "AWS_SERVICE",
      "Principal": "application.opensearchservice.amazonaws.com"
    }
  ]
}
```

### 5단계: OpenSearch UI 애플리케이션 생성(소스 계정)
<a name="scenario-3-step-5"></a>

```
aws opensearch create-application \
  --region region \
  --name "cross-account-vpc-iam-app" \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/vpc-domain-name",
    "dataSourceDescription":"Cross-account VPC domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'
```

### 6단계: 확인 및 액세스
<a name="scenario-3-step-6"></a>

애플리케이션 세부 정보를 검색하여 엔드포인트 URL을 가져옵니다.

```
aws opensearch get-application \
  --region region \
  --id application-id
```
+ 응답에서 애플리케이션 엔드포인트 URL로 이동합니다.
+ IAM 자격 증명으로 로그인합니다.
+ IAM 사용자는 자신의 자격 증명으로 데이터 영역 요청에 서명합니다.
+ 대상 도메인 액세스 정책은 사용자가 액세스할 수 있는 데이터를 제어합니다.

## 시나리오 4: VPC 도메인에 액세스하는 IAM Identity Center 사용자
<a name="cross-account-scenario-4"></a>

### 1단계: 교차 계정 IAM 역할 생성(대상 계정)
<a name="scenario-4-step-1"></a>

소스 계정이 도메인 검증을 위해 수임하도록 허용하는 IAM 역할을 대상 계정에 생성합니다.

**교차 계정 역할을 생성하려면**

1. 소스 계정이 역할을 수임하도록 허용하는 신뢰 정책을 생성합니다.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "AWS": "arn:aws:iam::source-account-id:root"
       },
       "Action": "sts:AssumeRole"
     }]
   }
   ```

1. 역할을 생성합니다.

   ```
   aws iam create-role \
     --role-name OpenSearchUIAccessRole \
     --assume-role-policy-document file://trust-policy.json
   ```

1. `es:DescribeDomain` 작업만 사용하여 권한 정책을 생성합니다.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": "es:DescribeDomain",
       "Resource": "arn:aws:es:region:target-account-id:domain/*"
     }]
   }
   ```

1. 역할에 권한 정책 연결:

   ```
   aws iam put-role-policy \
     --role-name OpenSearchUIAccessRole \
     --policy-name ValidationOnly \
     --policy-document file://permissions-policy.json
   ```

### 2단계: VPC(대상 계정) 설정
<a name="scenario-4-step-2"></a>

대상 계정에 VPC가 이미 있는 경우이 단계를 건너뜁니다.

```
# Create VPC
aws ec2 create-vpc \
  --cidr-block 10.0.0.0/16 \
  --region region

# Create subnet
aws ec2 create-subnet \
  --vpc-id vpc-id \
  --cidr-block 10.0.1.0/24 \
  --availability-zone regiona \
  --region region

# Create security group
aws ec2 create-security-group \
  --group-name opensearch-vpc-sg \
  --description "Security group for OpenSearch VPC domain" \
  --vpc-id vpc-id \
  --region region

# Allow inbound HTTPS
aws ec2 authorize-security-group-ingress \
  --group-id security-group-id \
  --protocol tcp \
  --port 443 \
  --cidr 10.0.0.0/16 \
  --region region
```

[VPC 도메인 생성](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html)에 대해 자세히 알아봅니다.

### 3단계: VPC 도메인 생성(대상 계정)
<a name="scenario-4-step-3"></a>

와 동일한 명령을 사용하지[3단계: VPC 도메인 생성(대상 계정)](#scenario-3-step-3)만 소스 계정에서 IAM Identity Center 애플리케이션 역할을 허용하도록 액세스 정책을 업데이트합니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::source-account-id:role/NeoIdCAppRole"
    },
    "Action": "es:ESHttp*",
    "Resource": "arn:aws:es:region:target-account-id:domain/vpc-domain-name/*"
  }]
}
```

계속하기 `Active` 전에 도메인 상태가 될 때까지 기다립니다.

### 4단계: OpenSearch UI 서비스 보안 주체(대상 계정)에 대한 VPC 엔드포인트 권한 부여
<a name="scenario-4-step-4"></a>

**중요**  
이는 VPC 도메인에 고유한 중요한 단계입니다. OpenSearch UI 서비스는 VPC 엔드포인트에 액세스할 수 있는 명시적 권한이 있어야 합니다.

```
# Authorize the service principal
aws opensearch authorize-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --service "application.opensearchservice.amazonaws.com" \
  --region region

# Verify authorization
aws opensearch list-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --region region
```

예상 응답:

```
{
  "AuthorizedPrincipalList": [
    {
      "PrincipalType": "AWS_SERVICE",
      "Principal": "application.opensearchservice.amazonaws.com"
    }
  ]
}
```

### 5단계: IAM Identity Center 애플리케이션에 대한 IAM 역할 생성(소스 계정)
<a name="scenario-4-step-5"></a>

OpenSearch UI가 IAM Identity Center 사용자 데이터 영역 액세스에 사용하는 소스 계정에서 IAM 역할을 생성합니다.

**IAM Identity Center 애플리케이션 역할을 생성하려면**

1. 신뢰 정책 생성:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       },
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:SetContext",
         "Condition": {
           "ForAllValues:ArnEquals": {
             "sts:RequestContextProviders": "arn:aws:iam::source-account-id:oidc-provider/portal.sso.region.amazonaws.com/apl/application-id"
           }
         }
       }
     ]
   }
   ```

1. 권한 정책 생성:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Sid": "OpenSearchDomain",
       "Effect": "Allow",
       "Action": ["es:ESHttp*"],
       "Resource": "*"
     }]
   }
   ```

1. 역할을 생성하고 정책을 연결합니다.

   ```
   aws iam create-role \
     --role-name NeoIdCAppRole \
     --assume-role-policy-document file://neoidc-trust-policy.json
   
   aws iam put-role-policy \
     --role-name NeoIdCAppRole \
     --policy-name NeoIdCAppPermissions \
     --policy-document file://neoidc-permissions-policy.json
   ```

### 6단계: IAM Identity Center를 사용하여 OpenSearch UI 애플리케이션 생성(소스 계정)
<a name="scenario-4-step-6"></a>

```
aws opensearch create-application \
  --region region \
  --name "cross-account-vpc-idc-app" \
  --iam-identity-center-options '{
    "enabled":true,
    "iamIdentityCenterInstanceArn":"arn:aws:sso:::instance/ssoins-instance-id",
    "iamRoleForIdentityCenterApplicationArn":"arn:aws:iam::source-account-id:role/NeoIdCAppRole"
  }' \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/vpc-domain-name",
    "dataSourceDescription":"Cross-account VPC domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'
```

### 7단계: IAM Identity Center 사용자 및 그룹 생성 및 할당
<a name="scenario-4-step-7"></a>

**IAM Identity Center 사용자 생성**  
다음 명령을 실행합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

```
aws identitystore create-user \
  --identity-store-id d-directory-id \
  --user-name user-email \
  --display-name "display-name" \
  --name Formatted=string,FamilyName=last-name,GivenName=first-name \
  --emails Value=user-email,Type=work,Primary=true
```

**IAM Identity Center 그룹 생성 및 사용자 추가**  
다음 명령을 실행합니다.

```
aws identitystore create-group \
  --identity-store-id d-directory-id \
  --display-name "OpenSearchUsers" \
  --description "Users with OpenSearch access"

aws identitystore create-group-membership \
  --identity-store-id d-directory-id \
  --group-id group-id \
  --member-id UserId=user-id
```

**애플리케이션에 사용자 또는 그룹 할당**  
다음 명령을 실행합니다.

```
aws sso-admin create-application-assignment \
  --application-arn "arn:aws:sso:::source-account-id:application/ssoins-instance-id/apl-application-id" \
  --principal-id user-id-or-group-id \
  --principal-type USER
```

**대상 도메인에서 백엔드 역할 매핑 구성**  
IAM Identity Center 그룹을 대상 도메인의 OpenSearch 보안 역할에 매핑합니다.

```
curl -XPUT "https://domain-endpoint/_plugins/_security/api/rolesmapping/all_access" \
  -u admin:master-password \
  -H 'Content-Type: application/json' \
  -d '{
    "backend_roles": ["group-id"],
    "hosts": [],
    "users": []
  }'
```

### 8단계: 확인 및 액세스
<a name="scenario-4-step-8"></a>

```
aws opensearch get-application \
  --region region \
  --id application-id
```
+ 애플리케이션 엔드포인트 URL로 이동합니다.
+ IAM Identity Center 사용자 자격 증명으로 로그인합니다.
+ IAM Identity Center 사용자의 데이터 요청은 교차 계정 역할이 아닌 IAM Identity Center 애플리케이션 역할로 서명됩니다.
+ 도메인의 백엔드 역할 매핑은 데이터 액세스 권한을 제어합니다.

## 애플리케이션 관리
<a name="cross-account-managing-applications"></a>

**교차 계정 데이터 소스로 애플리케이션 업데이트**  
다음 명령을 실행합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

```
aws opensearch update-application \
  --region region \
  --id application-id \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-1",
    "dataSourceDescription":"First cross-account domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  },{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-2",
    "dataSourceDescription":"Second cross-account domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]'
```

**중요**  
업데이트 작업은 전체 데이터 소스 배열을 대체합니다. 유지하려는 모든 데이터 소스를 포함합니다.

**애플리케이션 나열**  
다음 명령을 실행합니다.

```
aws opensearch list-applications \
  --region region
```

**애플리케이션 삭제**  
다음 명령을 실행합니다.

```
aws opensearch delete-application \
  --region region \
  --id application-id
```

**VPC 엔드포인트 액세스 취소**  
다음 명령을 실행합니다.

```
aws opensearch revoke-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --service "application.opensearchservice.amazonaws.com" \
  --region region
```

## 빠른 참조
<a name="cross-account-quick-reference"></a>

다음 표에는 도메인 유형과 인증 방법 간의 주요 차이점이 요약되어 있습니다.


**퍼블릭 도메인과 VPC 도메인 비교**  

| 속성 | 퍼블릭 도메인 | VPC 도메인 | 
| --- | --- | --- | 
| VPC 엔드포인트 권한 부여 | 불필요 | 필수 -가 권한을 부여해야 합니다. application.opensearchservice.amazonaws.com  | 
| 네트워크 설정 | 없음 | HTTPS(443) 인바운드가 있는 VPC, 서브넷, 보안 그룹 | 
| IAM 액세스 정책 | 필수 | 필수 | 
| 교차 계정 역할 | 교차 계정에 필요 | 교차 계정에 필요 | 


**IAM 사용자와 IAM Identity Center 사용자 비교**  

| 속성 | IAM 사용자 | IAM Identity Center 사용자 | 
| --- | --- | --- | 
| 데이터 영역 자격 증명 | 사용자의 자체 IAM 자격 증명 | IAM Identity Center 애플리케이션 역할 | 
| 액세스 관리 | 도메인 액세스 정책 | 도메인 액세스 정책 및 백엔드 역할 매핑 | 
| 추가 설정 | 없음 | IAM Identity Center 애플리케이션 역할, 사용자/그룹 생성, 애플리케이션 할당, 백엔드 역할 매핑 | 
| OpenSearch UI 애플리케이션 구성 | IAM Identity Center 옵션 없음 | --iam-identity-center-options 필수 | 

## 중요 정보
<a name="cross-account-important-notes"></a>
+ 는와 동일한 계정에 있어야 `iamRoleForDataSourceArn` 합니다`dataSourceArn`.
+ `iamRoleForDataSourceArn`는 교차 계정 데이터 소스에만 필요합니다. 동일 계정 데이터 소스의 경우 생략합니다.
+ 교차 계정 역할에는 `es:DescribeDomain` 권한만 필요합니다. 데이터 영역 액세스에는 사용되지 않습니다.
+ VPC 도메인의 경우 IAM 정책과 VPC 엔드포인트 권한 부여를 모두 구성해야 합니다.
+ 지원되는 엔진 버전: OpenSearch 1.3 이상.

## 문제 해결
<a name="cross-account-troubleshooting"></a>


| 문제 | 해결 방법 | 
| --- | --- | 
| "도메인에 액세스할 수 없음"으로 애플리케이션 생성 실패 | 교차 계정 역할에 es:DescribeDomain 권한이 있고 신뢰 정책이 소스 계정을 허용하는지 확인합니다. | 
| VPC 도메인 연결 실패 | VPC 엔드포인트에에 대한 권한이 있는지 확인합니다application.opensearchservice.amazonaws.com. | 
| IAM 사용자에 대한 데이터 영역 액세스 거부 | 대상 도메인 액세스 정책이 IAM 사용자 또는 역할 보안 주체를 허용하는지 확인합니다. | 
| IAM Identity Center 사용자에 대한 데이터 영역 액세스 거부 | 백엔드 역할 매핑에 IAM Identity Center 그룹 ID가 포함되어 있고 도메인 정책에서 IAM Identity Center 애플리케이션 역할을 허용하는지 확인합니다. | 
| 계정 불일치 오류 | iamRoleForDataSourceArn가의 도메인과 동일한 계정에 있는지 확인합니다dataSourceArn. | 

# 클러스터 간 검색
<a name="application-cross-cluster-search"></a>

Amazon OpenSearch Serverless의 [교차 클러스터 검색](cross-cluster-search.md)을 사용하면 연결된 여러 도메인에 걸쳐 쿼리 및 집계를 수행할 수 있습니다.

Amazon OpenSearch Serverless의 교차 클러스터 검색은 *소스 도메인 * 및 *대상 도메인*의 개념을 사용합니다. 교차 클러스터 검색 요청은 소스 도메인에서 시작됩니다. 대상 도메인은 소스 도메인이 쿼리할 다른 AWS 계정 또는 AWS 리전 (또는 둘 다)에 있을 수 있습니다. 교차 클러스터 검색을 사용하여 동일한 계정의 OpenSearch UI와 연결하도록 소스 도메인을 구성한 다음, 대상 도메인에 대한 연결을 생성할 수 있습니다. 결과적으로, 다른 계정 또는 리전에 있더라도 대상 도메인의 데이터와 함께 OpenSearch UI를 사용할 수 있습니다.

Amazon OpenSearch Service에서 송[수신되는 AWS 데이터에 대해 표준 데이터 전송 요금을](https://aws.amazon.com/opensearch-service/pricing/) 지불합니다. OpenSearch Service 도메인 내의 노드 간에 전송된 데이터에 대해서는 요금이 부과되지 않습니다. 데이터 '수신' 및 '전송' 요금에 대한 자세한 내용은 *Amazon EC2 온디맨드 요금* 페이지에서 [데이터 전송](https://aws.amazon.com/ec2/pricing/on-demand/#Data_Transfer)을 참조하세요.

OpenSearch UI를 다른 계정 또는 다른 리전의 클러스터와 연결하는 메커니즘으로 교차 클러스터 검색을 사용할 수 있습니다. 도메인 간의 요청은 기본적으로 노드 간 암호화의 일부로 전송 중에 암호화됩니다.

**참고**  
오픈 소스 OpenSearch 도구에는 [교차 클러스터 검색](https://opensearch.org/docs/latest/search-plugins/cross-cluster-search/)에 대한 설명서도 있습니다. 오픈 소스 클러스터의 오픈 소스 도구에 대한 설정은 관리형 Amazon OpenSearch Service 도메인과 비교했을 때 크게 다릅니다.  
특히 Amazon OpenSearch Serverless에서는 `cURL` 요청을 사용하는 대신 AWS Management Console 을 사용하여 클러스터 간 연결을 구성합니다. 관리형 서비스는 세분화된 액세스 제어 외에도 교차 클러스터 인증에 AWS Identity and Access Management (IAM)를 사용합니다.  
따라서 오픈 소스 OpenSearch 설명서 대신 이 주제를 사용하여 도메인에 대한 교차 클러스터 검색을 구성하는 것이 좋습니다.

**교차 클러스터 검색 사용 시 기능 차이**  
교차 클러스터 검색을 사용하여 생성된 대상 도메인은 일반 도메인과 비교하여 다음과 같은 기능상의 차이점과 요구 사항이 있습니다.
+ 원격 클러스터에는 데이터를 쓰거나 `PUT` 명령을 실행할 수 없습니다. 원격 클러스터에 대한 액세스는 *읽기 전용*입니다.
+ 소스 도메인과 대상 도메인 모두 OpenSearch 도메인이어야 합니다. OpenSearch UI의 Elasticsearch 도메인 또는 자체 관리형 OpenSearch/Elasticsearch 클러스터는 연결할 수 없습니다.
+ 도메인에는 다른 도메인에 대한 최대 20개의 연결이 있을 수 있습니다. 여기에는 발신 연결과 수신 연결이 모두 포함됩니다.
+ 소스 도메인의 OpenSearch 버전은 대상 도메인과 같거나 상위 버전에 있어야 합니다. 두 도메인 간에 양방향 연결을 설정하려면 두 도메인이 동일한 버전이어야 합니다. 연결하기 전에 두 도메인을 모두 최신 버전으로 업그레이드하는 것이 좋습니다. 양방향 연결을 설정한 후 도메인을 업데이트해야 하는 경우, 먼저 연결을 삭제한 후에 다시 생성해야 합니다.
+ 원격 클러스터에는 사용자 지정 사전이나 SQL을 사용할 수 없습니다.
+  CloudFormation 를 사용하여 도메인을 연결할 수 없습니다.
+ M3 또는 버스트 가능(T2 및 T3) 인스턴스에서는 클러스터 간 검색을 사용할 수 없습니다.
+ 교차 클러스터 검색은 Amazon OpenSearch Serverless 컬렉션에 대해 작동하지 않습니다.

**OpenSearch UI의 교차 클러스터 검색 전제 조건**  
두 OpenSearch 도메인 간의 교차 클러스터 검색을 설정하기 전에 도메인이 다음 요구 사항을 충족하는지 확인하세요.
+ 두 도메인 모두에 대해 세분화된 액세스 제어가 활성화됨
+ 두 도메인 모두에 노드 간 암호화가 활성화됨

**Topics**
+ [교차 클러스터 검색을 사용하여 교차 리전 및 교차 계정 데이터 액세스에 대한 액세스 권한 설정](#cross-cluster-search-security)
+ [도메인 간 연결 생성](#cross-cluster-search-create-connection)
+ [교차 클러스터 검색을 사용한 교차 리전 및 교차 계정 데이터 액세스의 보안 설정 테스트](#cross-cluster-search-security-testing)
+ [연결 삭제](#cross-cluster-search-deleting-connection)

## 교차 클러스터 검색을 사용하여 교차 리전 및 교차 계정 데이터 액세스에 대한 액세스 권한 설정
<a name="cross-cluster-search-security"></a>

교차 클러스터 검색 요청을 소스 도메인으로 보내면 도메인은 해당 요청을 도메인 액세스 정책과 비교하여 평가합니다. 교차 클러스터 검색에는 세분화된 액세스 제어가 필요합니다. 다음은 소스 도메인에 대한 오픈 액세스 정책의 예입니다.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
    {
        "Effect": "Allow",
        "Principal": {
          "AWS": [
            "*"
        ]
      },
      "Action": [
        "es:ESHttp*"
      ],
      "Resource": "arn:aws:es:us-east-1:111222333444:domain/src-domain/*"
    }
  ]
}
```

------

**참고**  
경로에 원격 인덱스를 포함하는 경우 도메인 ARN에서 URI를 URL로 인코딩해야 합니다.  
예를 들어 다음 ARN 형식을 사용합니다.  
`:arn:aws:es:us-east-1:111222333444:domain/my-domain/local_index,dst%3Aremote_index`  
다음 ARN 형식은 사용하지 마세요.  
`arn:aws:es:us-east-1:111222333444:domain/my-domain/local_index,dst:remote_index.`

세분화된 액세스 제어 외에 제한적인 액세스 정책을 사용하도록 선택하는 경우 정책에서 최소한 `es:ESHttpGet`에 대한 액세스를 허용해야 합니다. 다음은 예제입니다.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111222333444:user/john-doe"
        ]
      },
      "Action": "es:ESHttpGet",
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/my-domain/*"
    }
  ]
}
```

------

소스 도메인에 대한 [세분화된 액세스 제어](fgac.md)는 요청을 평가하여 유효한 IAM 또는 HTTP 기본 자격 증명으로 서명되었는지 확인합니다. 그렇게 서명된 경우 세분화된 액세스 제어는 다음으로 검색을 수행하고 데이터에 액세스할 수 있는 권한이 사용자에게 있는지 여부를 평가합니다.

다음은 검색 권한 요구 사항입니다.
+ 요청이 대상 도메인(예: `dest-alias:dest-index/_search)`)의 데이터만 검색하는 경우 대상 도메인에 대한 권한만 필요합니다.
+ 요청이 두 도메인(예: `source-index,dest-alias:dest-index/_search)`) 모두에서 데이터를 검색하는 경우 두 도메인에 대한 권한이 필요합니다.
+ 세분화된 액세스 제어를 사용하려면 관련 인덱스에 대한 표준 읽기 또는 검색 권한 외에 `indices:admin/shards/search_shards` 권한도 있어야 합니다.

소스 도메인은 요청을 대상 도메인에 전달합니다. 대상 도메인은 해당 도메인 액세스 정책을 기준으로 이 요청을 평가합니다. 문서 인덱싱 및 표준 검색 수행과 같은 OpenSearch UI의 모든 기능을 지원하려면 전체 권한이 설정되어 있어야 합니다. 다음은 대상 도메인에 대한 권장 정책의 예입니다.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
 "Statement": [
    {
       "Effect": "Allow",
       "Principal": {
         "AWS": [
           "*"
        ]
      },
      "Action": [
        "es:ESHttp*"
      ],
      "Resource": "arn:aws:es:us-east-2:111222333444:domain/my-destination-domain/*"
    },
    {
    "Effect": "Allow",
        "Principal": {
    "AWS": "*"
      },
      "Action": "es:ESCrossClusterGet",
      "Resource": "arn:aws:es:us-east-2:111222333444:domain/"
    }
  ]
}
```

------

기본 검색만 수행하려는 경우 최소 정책 요구 사항은 와일드카드 지원 없이 대상 도메인에 `es:ESCrossClusterGet` 권한을 적용하는 것입니다. 예를 들어 이전 정책에서 도메인 이름을 */my-destination-domain/\$1*이 아니라 */my-destination-domain*으로 지정합니다.

이 경우 대상 도메인은 검색을 수행하고 결과를 소스 도메인에 반환합니다. 소스 도메인은 자체 결과(있는 경우)를 대상 도메인의 결과와 결합하여 반환합니다.

## 도메인 간 연결 생성
<a name="cross-cluster-search-create-connection"></a>

교차 클러스터 검색 연결은 소스 도메인에서 대상 도메인으로 단방향입니다. 즉, 대상 도메인(다른 계정 또는 리전)은 OpenSearch UI에 로컬인 소스 도메인을 쿼리할 수 없습니다. 소스 도메인은 대상 도메인에 대한 *아웃바운드* 연결을 생성합니다. 대상 도메인은 소스 도메인에서 *인바운드* 연결 요청을 받습니다.

![\[이 그림은 교차 클러스터 검색 연결은 소스 도메인에서 대상 도메인으로 단방향임을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/images/ui-oubound-inbound-connections.png)


**도메인 간 연결을 생성하려면**

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

1. 왼쪽 탐색 메뉴에서 **도메인**을 선택합니다.

1. 소스 도메인으로 사용할 도메인의 이름을 선택한 다음 **연결** 탭을 선택합니다.

1. **아웃바운드 연결** 영역에서 **요청**을 선택합니다.

1. [**연결 별칭(Connection alias)**]에 연결 이름을 입력합니다. 연결 별칭은 OpenSearch UI에서 대상 도메인을 선택하는 데 사용됩니다.

1. **연결 모드**에서 교차 클러스터 검색 또는 복제에 대해 **직접**을 선택합니다.

1. 검색 중에 사용할 수 없는 클러스터를 건너뛰도록 지정하려면 **사용할 수 없는 클러스터 건너뛰기** 상자를 선택합니다. 이 옵션을 선택하면 하나 이상의 원격 클러스터에서 오류가 발생하더라도 교차 클러스터 쿼리가 일부 결과를 반환할 수 있습니다.

1. **대상 클러스터**에서 **이 AWS 계정의 클러스터에 연결**과 **다른 AWS 계정의 클러스터에 연결** 중에서 선택합니다.

1. **원격 도메인 ARN**에 클러스터의 Amazon 리소스 이름(ARN)을 입력합니다. 이 도메인 ARN은 도메인 세부 정보 페이지의 **일반 정보** 영역에 있을 수 있습니다.

   도메인은 다음 요구 사항을 충족해야 합니다.
   + ARN은 `arn:partition:es:regionaccount-id:type/domain-id` 형식이어야 합니다. 예제:

     `arn:aws:es:us-east-2:111222333444:domain/my-domain`
   + 도메인은 OpenSearch 버전 1.0(이상) 또는 Elasticsearch 버전 6.7(이상)을 사용하도록 구성해야 합니다.
   + 도메인에서 세분화된 액세스 제어를 활성화해야 합니다.
   + 도메인이 OpenSearch를 실행 중이어야 합니다.

1. **요청**을 선택합니다.

클러스터 간 검색은 먼저 연결 요청을 검증하여 전제 조건이 충족되는지 확인합니다. 도메인이 호환되지 않을 경우 연결 요청이 `Validation failed` 상태로 전환됩니다.

연결 요청이 성공적으로 검증되면 대상 도메인으로 전송되어 승인을 받아야 합니다. 이 승인이 될 때까지 연결은 `Pending acceptance` 상태로 유지됩니다. 대상 도메인에서 연결 요청이 수락되면 상태가 `Active`으로 변경되고 대상 도메인을 쿼리에 사용할 수 있게 됩니다.

도메인 페이지에는 대상 도메인의 전체 도메인 상태 및 인스턴스 상태 세부 정보가 표시됩니다. 도메인 소유자만 도메인과의 연결을 유연하게 생성하고 보고 제거하고 모니터링할 수 있습니다.

연결이 설정되면 연결된 도메인의 노드 간에 흐르는 모든 트래픽이 암호화됩니다. VPC 도메인을 VPC가 아닌 도메인에 연결하고 VPC가 아닌 도메인이 인터넷에서 트래픽을 수신할 수 있는 퍼블릭 엔드포인트인 경우, 도메인 간의 클러스터 간 트래픽은 여전히 암호화되고 안전합니다.

## 교차 클러스터 검색을 사용한 교차 리전 및 교차 계정 데이터 액세스의 보안 설정 테스트
<a name="cross-cluster-search-security-testing"></a>

교차 클러스터 검색을 사용하여 교차 리전 및 교차 계정 데이터 액세스를 위한 액세스 권한을 설정한 후에는 협업 API 개발을 위한 서드 파티 플랫폼인 [https://www.postman.com/](https://www.postman.com/)을 사용하여 설정을 테스트하는 것이 좋습니다.

**Postman을 사용하여 보안 설정을 설정하려면**

1. 대상 도메인에서 문서를 인덱싱합니다. 다음은 샘플 요청입니다.

   ```
   POST https://dst-domain.us-east-1.es.amazonaws.com/books/_doc/1
   {
   "Dracula": "Bram Stoker"
   }
   ```

1. 소스 도메인에서 이 인덱스를 쿼리하려면 쿼리 내에 대상 도메인의 연결 별칭을 포함합니다. 도메인 대시보드의 연결(Connections) 탭에서 연결 별칭을 찾을 수 있습니다. 다음은 샘플 요청과 잘린 응답입니다.

   ```
   GET https://src-domain.us-east-1.es.amazonaws.com/connection_alias:books/_search
   {
   ...
     "hits": [
   {
   "_index": "source-destination:books",
     "_type": "_doc",
     "_id": "1",
     "_score": 1,
     "_source": {
   "Dracula": "Bram Stoker"
     }
   }
     ]
   }
   ```

1. (선택 사항) 단일 검색으로 여러 도메인을 포함하는 구성을 생성할 수 있습니다. 예를 들어 다음과 같은 설정을 가정해 보겠습니다.

   연결 별칭 이름이 `cluster_b`인 `domain-a`에서 `domain-b`로의 연결

   연결 별칭 이름이 `cluster_c`인 `domain-a`에서 `domain-c`로의 연결

   이 경우 검색에는 콘텐츠 `domain-a`, `domain-b` 및 `domain-c`가 포함됩니다. 다음은 샘플 요청과 응답입니다.

   요청

   ```
   GET https://src-domain.us-east-1.es.amazonaws.com/local_index,cluster_b:b_index,cluster_c:c_index/_search
   {
     "query": {
   "match": {
     "user": "domino"
   }
     }
   }
   ```

   응답:

   ```
   {
   "took": 150,
     "timed_out": false,
     "_shards": {
   "total": 3,
   "successful": 3,
   "failed": 0,
   "skipped": 0
     },
     "_clusters": {
   "total": 3,
   "successful": 3,
   "skipped": 0
     },
     "hits": {
   "total": 3,
   "max_score": 1,
   "hits": [
     {
   "_index": "local_index",
       "_type": "_doc",
       "_id": "0",
       "_score": 1,
       "_source": {
   "user": "domino",
         "message": "This is message 1",
         "likes": 0
       }
     },
     {
   "_index": "cluster_b:b_index",
       "_type": "_doc",
       "_id": "0",
       "_score": 2,
       "_source": {
   "user": "domino",
         "message": "This is message 2",
         "likes": 0
       }
     },
     {
   "_index": "cluster_c:c_index",
       "_type": "_doc",
       "_id": "0",
       "_score": 3,
       "_source": {
   "user": "domino",
         "message": "This is message 3",
         "likes": 0
       }
     }
   ]
     }
   }
   ```

연결 설정에서 사용할 수 없는 클러스터를 건너뛰도록 선택하지 않은 경우 검색 요청이 성공적으로 실행되려면 검색하는 모든 대상 클러스터를 사용할 수 있어야 합니다. 그렇지 않으면 전체 요청이 실패합니다. 도메인 중 하나를 사용할 수 없더라도 검색 결과가 반환되지 않습니다.

## 연결 삭제
<a name="cross-cluster-search-deleting-connection"></a>

연결을 삭제하면 대상 도메인에서 교차 클러스터 검색 작업이 중지됩니다.

소스 도메인이나 대상 도메인에서 다음 절차를 수행하여 연결을 제거할 수 있습니다. 연결을 제거한 후에도 15일 동안 `Deleted` 상태로 계속 표시됩니다.

활성 클러스터 간 연결이 있는 도메인은 삭제할 수 없습니다. 도메인을 삭제하려면 먼저 해당 도메인과의 수신 연결과 발신 연결을 모두 제거합니다. 그러면 도메인을 삭제하기 전에 클러스터 간 도메인 사용자를 고려할 수 있습니다.

**연결 삭제**

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

1. 왼쪽 탐색 메뉴에서 **도메인**을 선택합니다.

1. 삭제할 도메인의 이름을 선택한 후 **연결** 탭을 선택합니다.

1. 삭제할 연결의 이름을 선택합니다.

1. **삭제**를 선택하고 삭제를 확인합니다.

# VPC 엔드포인트에서 OpenSearch UI에 대한 액세스 관리
<a name="application-access-ui-from-vpc-endpoint"></a>

 AWS PrivateLink를 사용하여 VPC와 OpenSearch UI 간에 프라이빗 연결을 생성할 수 있습니다. 이 연결을 사용하면 동일한 VPC에 있는 것처럼 OpenSearch UI 애플리케이션에 액세스할 수 있습니다. 이렇게 하면 인터넷 게이트웨이, NAT 디바이스, VPN 연결을 구성하거나 연결을 AWS Direct Connect 설정할 필요가 없습니다. VPC의 인스턴스는 OpenSearch UI에 액세스하기 위해 퍼블릭 IP 주소가 필요하지 않습니다.

이 프라이빗 연결을 설정하려면 먼저 기반 인터페이스 엔드포인트를 생성합니다 AWS PrivateLink. 인터페이스 엔드포인트에 대해 지정하는 각 서브넷에 엔드포인트 네트워크 인터페이스가 자동으로 생성됩니다. 이는 OpenSearch UI 애플리케이션으로 향하는 트래픽의 진입점 역할을 하는 요청자 관리형 네트워크 인터페이스입니다.

## VPC와 OpenSearch UI 간에 프라이빗 연결 생성
<a name="ui-access-from-vpc-endpoint-create"></a>

 AWS Management Console 또는를 사용하여 VPC에서 OpenSearch UI에 액세스하기 위한 프라이빗 연결을 생성할 수 있습니다 AWS CLI.

### VPC와 OpenSearch UI 간에 프라이빗 연결 생성(콘솔)
<a name="ui-access-from-vpc-endpoint-create-console"></a>

**콘솔을 사용하여 VPC와 OpenSearch UI 간에 프라이빗 연결을 생성하려면**

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

1. 왼쪽 탐색 메뉴의 **서버리스**에서 **VPC 엔드포인트**를 선택합니다.

1. **Create VPC endpoint**(VPC 엔드포인트 생성)를 선택합니다.

1. **이름**에 엔드포인트의 이름을 입력합니다.

1. **VPC**에서 OpenSearch UI 애플리케이션에 액세스할 VPC를 선택합니다.

1. **서브넷**에서 OpenSearch UI 애플리케이션에 액세스할 서브넷을 하나 선택합니다.
**참고**  
엔드포인트의 IP 주소 및 DNS 유형이 서브넷 유형을 기반으로 하는 경우:  
이중 스택: 모든 서브넷에 IPv4 및 IPv6 주소 범위가 모두 있는 경우.
IPv6: 모든 서브넷이 IPv6 전용 서브넷인 경우.
IPv4: 모든 서브넷이 IPv4 주소 범위를 포함하는 경우.

1. **보안 그룹**에서 엔드포인트 네트워크 인터페이스에 연결할 보안 그룹을 하나 이상 선택합니다.
**참고**  
이 단계에서는 엔드포인트로 승인하는 인바운드 트래픽의 포트, 프로토콜, 소스를 제한하게 됩니다. 보안 그룹 규칙이 VPC 엔드포인트를 사용하여 OpenSearch UI 애플리케이션과 통신할 리소스가 엔드포인트 네트워크 인터페이스와도 통신하도록 허용하는지 확인합니다.

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

### VPC와 OpenSearch UI 간에 프라이빗 연결 생성(AWS CLI)
<a name="ui-access-from-vpc-endpoint-create-cli"></a>

**를 사용하여 VPC와 OpenSearch UI 간에 프라이빗 연결을 생성하려면 AWS CLI**  
다음 명령을 실행합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

```
aws opensearchserverless create-vpc-endpoint \
    --region region \
    --endpoint endpoint \
    --name vpc_endpoint_name \
    --vpc-id vpc_id \
    --subnet-ids subnet_ids
```

## OpenSearch UI 애플리케이션에 대한 액세스를 허용하도록 VPC 엔드포인트 정책 업데이트
<a name="ui-access-from-vpc-endpoint-allow"></a>

프라이빗 연결을 생성한 후 애플리케이션 ID를 지정하여 VPC 엔드포인트 정책에서 OpenSearch UI 애플리케이션에 대한 액세스를 허용하도록 VPC 엔드포인트 정책을 업데이트합니다.

VPC 엔드포인트 정책 업데이트에 대한 자세한 내용은 *AWS PrivateLink 가이드*의 [VPC 엔드포인트 정책 업데이트](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#update-vpc-endpoint-policy)를 참조하세요.

VPC 엔드포인트 정책에 다음 문이 포함되어 있는지 확인합니다. *자리 표시자 값*을 자신의 정보로 바꿉니다.

```
{
    "Statement": [{
        "Action": ["opensearch:*"],
        "Effect": "Allow",
        "Principal": "*",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "opensearch:ApplicationId": ["opensearch-ui-application-id"]
            }
        }
    }]
}
```

## VPC 엔드포인트 정책에서 OpenSearch UI에 대한 액세스 취소
<a name="ui-access-from-vpc-endpoint-deny"></a>

OpenSearch UI는 VPC 엔드포인트 정책에서 사용자가 VPC에서 애플리케이션에 액세스할 수 있도록 하는 명시적 권한을 필요로 합니다. 사용자가 더 이상 VPC에서 OpenSearch UI에 액세스하지 않도록 하려면 엔드포인트 정책에서 이 권한을 제거할 수 있습니다. 그러면 사용자가 OpenSearch UI에 액세스하려고 하면 `403 forbidden` 오류 메시지가 표시됩니다.

VPC 엔드포인트 정책 업데이트에 대한 자세한 내용은 *AWS PrivateLink 가이드*의 [VPC 엔드포인트 정책 업데이트](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#update-vpc-endpoint-policy)를 참조하세요.

다음은 VPC에서 UI 애플리케이션에 대한 액세스를 거부하는 VPC 엔드포인트 정책의 예입니다.

```
{
    "Statement": [{
        "Action": ["opensearch:*"],
        "Effect": "Allow",
        "Principal": "*",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "opensearch:ApplicationId": [""]
            }
        }
    }]
}
```

# OpenSearch 대시보드에서 OpenSearch UI로 저장된 객체 마이그레이션
<a name="application-migration"></a>

OpenSearch Dashboards에 기존 대시보드, 시각화, 인덱스 패턴 및 기타 저장된 객체가 있는 경우 OpenSearch UI에서 마이그레이션하고 재사용할 수 있습니다.

OpenSearch UI로 마이그레이션할 때의 이점:
+ **고가용성** - OpenSearch UI는에서 호스팅 AWS 클라우드 되며 도메인 업그레이드 및 유지 관리 중에도 계속 사용할 수 있는 반면, OpenSearch Dashboards는 도메인 내에서 호스팅되며 일시적으로 사용할 수 없습니다.
+ **다중 데이터 소스** - OpenSearch UI는 OpenSearch 도메인, 서버리스 컬렉션, Amazon S3 및 Amazon CloudWatch와의 데이터 연결을 비롯한 여러 데이터 소스에 통합 단일 창을 제공할 수 있으며, 각 OpenSearch 대시보드는 하나의 도메인 또는 컬렉션에서만 작동할 수 있습니다.
+ AI Assistant 및 Workspaces와 같은 추가 기능은 OpenSearch UI에서 사용할 수 있습니다. 자세히 알아보기: [Amazon OpenSearch Service에서 OpenSearch UI 사용](application.md).

**Topics**
+ [마이그레이션 개요](#application-migrate-saved-objects-overview)
+ [사전 조건](#application-migrate-saved-objects-prerequisites)
+ [1단계: OpenSearch 대시보드에서 저장된 객체 내보내기](#application-migrate-saved-objects-export)
+ [2단계: 저장된 객체를 OpenSearch UI로 가져오기](#application-migrate-saved-objects-import)

## 마이그레이션 개요
<a name="application-migrate-saved-objects-overview"></a>

마이그레이션 프로세스는 다음과 같은 상위 단계로 구성됩니다.

1. **OpenSearch Dashboards에서 저장된 객체 내보내기** - OpenSearch Dashboards 저장된 객체 관리 UI 또는 내보내기 API를 사용하여 대시보드, 시각화, 인덱스 패턴 및 기타 객체를 줄 바꿈으로 구분된 JSON(NDJSON) 파일로 다운로드합니다.

1. **OpenSearch UI 애플리케이션 및 워크스페이스 생성** - 아직 생성하지 않은 경우 가져온 객체를 수신할 OpenSearch UI 애플리케이션 및 워크스페이스를 생성합니다.

1. **OpenSearch UI에 데이터 소스 등록** - OpenSearch 도메인을 OpenSearch UI 애플리케이션과 연결하고 워크스페이스 내의 데이터 소스로 등록합니다. 가져온 객체의 인덱스 패턴은이 데이터 소스를 참조합니다.

1. **저장된 객체를 OpenSearch UI로 가져오기** - OpenSearch UI 저장된 객체 관리 UI 또는 가져오기 API를 사용하여 NDJSON 파일을 대상 워크스페이스에 업로드합니다.

1. **가져온 객체 검증** - OpenSearch UI에서 대시보드 및 시각화를 열어 객체가 올바르게 표시되고 데이터가 연결된 도메인 또는 컬렉션에서 흐르고 있는지 확인합니다.

## 사전 조건
<a name="application-migrate-saved-objects-prerequisites"></a>

마이그레이션하기 전에 다음 사전 조건을 확인합니다.
+ Amazon OpenSearch Service 및 OpenSearch APIs. 자세한 내용은 [Amazon OpenSearch Service 애플리케이션을 생성하는 데 필요한 권한](application-getting-started.md#application-prerequisite-permissions) 단원을 참조하십시오.
+ 마이그레이션하려는 도메인 또는 컬렉션과 OpenSearch 대시보드에 액세스할 수 있습니다.
+ OpenSearch UI 애플리케이션을 생성했습니다. 애플리케이션 및 워크스페이스 생성에 대한 자세한 내용은 섹션을 참조하세요[Amazon OpenSearch Service에서 OpenSearch 사용자 인터페이스 시작하기](application-getting-started.md).
+ 동일한 도메인 또는 컬렉션을 OpenSearch UI 애플리케이션에 연결했습니다. 데이터 소스 연결에 대한 자세한 내용은 섹션을 참조하세요[데이터 소스 연결 및 가상 프라이빗 클라우드 액세스 권한 관리](application-data-sources-and-vpc.md).

**참고**  
OpenSearch UI는 OpenSearch 버전 1.3 이상만 지원합니다. 저장된 객체를 마이그레이션하기 전에 OpenSearch 도메인이 버전 1.3 이상을 실행 중인지 확인합니다.

## 1단계: OpenSearch 대시보드에서 저장된 객체 내보내기
<a name="application-migrate-saved-objects-export"></a>

관리 UI 또는 내보내기 API를 사용하여 OpenSearch Dashboards에서 저장된 객체를 내보냅니다. 내보내기는 선택한 모든 저장된 객체 유형과 해당 종속성을 포함하는 줄 바꿈으로 구분된 JSON(NDJSON) 파일을 생성합니다.

**Topics**
+ [OpenSearch 대시보드에서 수동으로 내보내기](#application-migrate-export-console)
+ [API를 통해 내보내기](#application-migrate-export-api)

### OpenSearch 대시보드에서 수동으로 내보내기
<a name="application-migrate-export-console"></a>

**OpenSearch Dashboards 관리 UI를 사용하여 저장된 객체를 내보내려면**

1. OpenSearch Dashboards 인스턴스를 엽니다.

1. 왼쪽 탐색 패널에서 **관리를** 선택합니다.

1. **대시보드 관리**에서 **저장된 객체를** 선택합니다.

1. 내보낼 저장된 객체를 선택합니다. 특정 유형의 모든 객체를 내보내려면 검색 창을 사용하여 유형별로 필터링합니다. 모든 객체를 내보내려면 테이블 헤더에서 확인란을 선택합니다.

1. **내보내기**를 선택합니다.

1. **저장된 객체 내보내기** 대화 상자에서 **관련 객체 포함**이 선택되어 있는지 확인합니다. 이 옵션에는 시각화에서 참조하는 인덱스 패턴과 같이 선택한 저장된 객체가 의존하는 모든 객체가 포함됩니다. 종속성을 수동으로 관리하려는 경우에만이 옵션을 선택 취소합니다.

1. **내보내기**를 선택하여 `.ndjson` 파일을 로컬 시스템에 다운로드합니다.

**작은 정보**  
**관련 객체 포함**을 선택하면 내보낸 NDJSON 파일에는 종속 인덱스 패턴, 시각화 및 검색 객체를 포함하여 선택한 대시보드 및 시각화를 렌더링하는 데 필요한 저장된 모든 객체가 포함됩니다. 이렇게 하면 가져오기 단계가 간소화되고 참조 오류가 누락되지 않습니다.

### API를 통해 내보내기
<a name="application-migrate-export-api"></a>

OpenSearch Dashboards 저장된 객체 내보내기 API를 사용하여 저장된 객체를 프로그래밍 방식으로 내보낼 수 있습니다. 이는 마이그레이션을 자동화하거나 내보내기 단계를 CI/CD 파이프라인에 통합하는 데 유용합니다.

**참고**  
OpenSearch 도메인에 [세분화된 액세스 제어](fgac.md)가 활성화된 경우 내보내기 요청과 함께 인증 자격 증명을 제공해야 합니다. 사용자 이름 및 암호와 함께 `-u` 플래그를 추가하여 HTTP 기본 인증을 사용합니다. 인증 옵션에 대한 자세한 내용은 섹션을 참조하세요[Amazon OpenSearch Service에서 세분화된 액세스 제어](fgac.md).

다음 예시에서는 모든 대시보드를 관련 객체와 함께 내보냅니다. *자리 표시자*를 자신의 정보로 바꿉니다.

```
curl -X POST \
    "https://dashboards-endpoint/_dashboards/api/saved_objects/_export" \
    -u 'master-username:master-password' \
    -H "Content-Type: application/json" \
    -H "osd-xsrf: true" \
    -d '{
        "type": ["dashboard", "visualization", "index-pattern", "search"],
        "includeReferencesDeep": true,
        "excludeExportDetails": false
    }' \
    -o saved-objects-export.ndjson
```

도메인에 세분화된 액세스 제어가 활성화되어 있지 않은 경우 `-u` 플래그를 생략할 수 있습니다.

ID별로 저장된 특정 객체를 내보내려면 대신 `objects` 파라미터를 사용합니다`type`.

```
curl -X POST \
    "https://dashboards-endpoint/_dashboards/api/saved_objects/_export" \
    -u 'master-username:master-password' \
    -H "Content-Type: application/json" \
    -H "osd-xsrf: true" \
    -d '{
        "objects": [
            {"type": "dashboard", "id": "dashboard-id"},
            {"type": "visualization", "id": "visualization-id"}
        ],
        "includeReferencesDeep": true
    }' \
    -o saved-objects-export.ndjson
```

**참고**  
저장된 객체 IDs 찾으려면 저장된 객체 API를 사용하여 특정 유형의 모든 객체를 나열할 수 있습니다. 다음 예제에서는 모든 대시보드를 나열합니다.  

```
curl -X GET \
    "https://dashboards-endpoint/_dashboards/api/saved_objects/_find?type=dashboard" \
    -u 'master-username:master-password'
```
응답에는 저장된 각 객체의 ID가 포함됩니다. OpenSearch Dashboards에서 객체를 볼 때 브라우저 URL에서 ID를 찾을 수도 있습니다.

## 2단계: 저장된 객체를 OpenSearch UI로 가져오기
<a name="application-migrate-saved-objects-import"></a>

저장된 객체를 내보낸 후 NDJSON 파일을 OpenSearch UI로 수동으로 또는 API를 통해 가져올 수 있습니다.

**Topics**
+ [OpenSearch UI에서 수동으로 가져오기](#application-migrate-import-console)
+ [API를 통해 가져오기](#application-migrate-import-api)

### OpenSearch UI에서 수동으로 가져오기
<a name="application-migrate-import-console"></a>

**OpenSearch UI 관리 UI를 사용하여 저장된 객체를 가져오려면**

1. OpenSearch UI 애플리케이션을 열고 대상 워크스페이스로 이동합니다.

1. 워크스페이스의 상단 탐색에서 **자산을** 선택하거나 워크스페이스 자산 페이지로 이동합니다.

1. **가져오기**를 선택하여 **자산 가져오기** 대화 상자를 엽니다.

1. **파일 선택을** 선택하고 OpenSearch Dashboards에서 내보낸 `.ndjson` 파일을 선택합니다.

1. **충돌 관리**에서 다음 중 하나를 선택합니다.
   + **고유 IDs로 새 자산 생성**(기본값) - 가져온 모든 객체에 대해 새 IDs를 생성하여 기존 자산과의 충돌을 방지합니다.
   + **기존 자산 확인** - 기존 객체와 충돌이 있는지 확인합니다. 선택하면 다음 하위 옵션 중 하나를 선택합니다.
     + **충돌 자동 덮어쓰기** - ID가 동일한 기존 자산이 자동으로 대체됩니다.
     + **충돌에 대한 요청 작업** - 각 충돌을 개별적으로 해결하라는 메시지가 표시됩니다.

1. **가져오기**를 선택합니다.

1. 가져오기 요약을 검토합니다.

### API를 통해 가져오기
<a name="application-migrate-import-api"></a>

 AWS 서명 버전 4 인증이 포함된 API를 사용하여 저장된 객체를 가져오려면 먼저 데이터 소스 ID를 가져온 다음 가져오기 요청에 사용해야 합니다. *자리 표시자*를 자신의 정보로 바꿉니다.

1단계: 워크스페이스의 데이터 소스 ID 가져오기:

```
curl -X GET \
    "https://opensearch-ui-endpoint/w/workspace-id/api/saved_objects/_find?type=data-source" \
    --aws-sigv4 "aws:amz:region:opensearch" \
    --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
    -H "x-amz-security-token: $AWS_SESSION_TOKEN" \
    -H "osd-xsrf: true"
```

**참고**  
응답에는 데이터 소스 ID가 포함됩니다. OpenSearch UI에서 데이터 소스를 볼 때 브라우저 URL에서 데이터 소스 ID를 찾을 수도 있습니다.

2단계: 1단계의 데이터 소스 ID를 사용하여 저장된 객체 가져오기:

```
curl -X POST \
    "https://opensearch-ui-endpoint/w/workspace-id/api/saved_objects/_import?overwrite=true&dataSourceId=data-source-id" \
    --aws-sigv4 "aws:amz:region:opensearch" \
    --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
    -H "x-amz-security-token: $AWS_SESSION_TOKEN" \
    -H "osd-xsrf: true" \
    -F "file=@saved-objects-export.ndjson"
```

**참고**  
이 예제에서는 curl의 기본 제공 `--aws-sigv4` 옵션(curl 7.75 이상에서 사용 가능)을 사용하여 요청에 서명합니다. 명령을 실행하기 전에 자격 증명을 환경 변수로 설정합니다 AWS . `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`및 `AWS_SESSION_TOKEN` (임시 자격 증명을 사용하는 경우).

# OpenSearch UI 엔드포인트 및 할당량
<a name="opensearch-ui-endpoints-quotas"></a>

 AWS 서비스에 프로그래밍 방식으로 연결하려면 엔드포인트를 사용합니다. Service Quotas는 AWS 계정의 최대 서비스 리소스 또는 작업 수입니다.

Amazon OpenSearch UI는 OpenSearch Dashboards의 차세대 OpenSearch 사용자 인터페이스로, OpenSearch 대시보드에 액세스하기 위한 엔드포인트를 제공합니다. OpenSearch UI에 대한 서비스 엔드포인트 및 서비스 할당량을 찾으려면 이 주제를 참조하세요.

다른 OpenSearch 서비스에 대한 자세한 내용은 [서비스 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html)을 참조하세요.

## OpenSearch UI 엔드포인트
<a name="opensearch-ui-endpoints"></a>

OpenSearch UI는 다음 리전에서 사용 가능합니다.


| 리전 이름 | 리전 | 엔드포인트 | 프로토콜 | 
| --- | --- | --- | --- | 
| 아시아 태평양(뭄바이) | ap-south-1 |  opensearch.ap-south-1.amazonaws.com es.ap-south-1.amazonaws.com  |  HTTPS HTTPS  | 
| 유럽(파리) | eu-west-3 |  opensearch.eu-west-3.amazonaws.com es.eu-west-3.amazonaws.com  |  HTTPS HTTPS  | 
| 미국 동부(오하이오) | us-east-2 |  opensearch.us-east-2.amazonaws.com es.us-east-2.amazonaws.com  |  HTTPS HTTPS  | 
| 유럽(아일랜드) | eu-west-1 |  opensearch.eu-west-1.amazonaws.com es.eu-west-1.amazonaws.com  |  HTTPS HTTPS  | 
| 유럽(프랑크푸르트) | eu-central-1 |  opensearch.eu-central-1.amazonaws.com es.eu-central-1.amazonaws.com  |  HTTPS HTTPS  | 
| 남아메리카(상파울루) | sa-east-1 |  opensearch.sa-east-1.amazonaws.com es.sa-east-1.amazonaws.com  |  HTTPS HTTPS  | 
| 미국 동부(버지니아 북부) | us-east-1 |  opensearch.us-east-1.amazonaws.com es.us-east-1.amazonaws.com  |  HTTPS HTTPS  | 
| 유럽(런던) | eu-west-2 |  opensearch.eu-west-2.amazonaws.com es.eu-west-2.amazonaws.com  |  HTTPS HTTPS  | 
| 아시아 태평양(도쿄) | ap-northeast-1 |  opensearch.ap-northeast-1.amazonaws.com es.ap-northeast-1.amazonaws.com  |  HTTPS HTTPS  | 
| 미국 서부(오레곤) | us-west-2 |  opensearch.us-west-2.amazonaws.com es.us-west-2.amazonaws.com  |  HTTPS HTTPS  | 
| 아시아 태평양(싱가포르) | ap-southeast-1 |  opensearch.ap-southeast-1.amazonaws.com es.ap-southeast-1.amazonaws.com  |  HTTPS HTTPS  | 
| 아시아 태평양(시드니) | ap-southeast-2 |  opensearch.ap-southeast-2.amazonaws.com es.ap-southeast-2.amazonaws.com  |  HTTPS HTTPS  | 
| 캐나다(중부) | ca-central-1 |  opensearch.ca-central-1.amazonaws.com es.ca-central-1.amazonaws.com  |  HTTPS HTTPS  | 
| 유럽(스톡홀름) | eu-north-1 |  opensearch.eu-north-1.amazonaws.com es.eu-north-1.amazonaws.com  |  HTTPS HTTPS  | 
| 아시아 태평양(홍콩) | ap-east-1 |  opensearch.ap-east-1.amazonaws.com es.ap-east-1.amazonaws.com  |  HTTPS HTTPS  | 
| 아시아 태평양(서울) | ap-northeast-2 |  opensearch.ap-northeast-2.amazonaws.com es.ap-northeast-2.amazonaws.com  |  HTTPS HTTPS  | 
| 아시아 태평양(오사카) | ap-northeast-3 |  opensearch.ap-northeast-3.amazonaws.com es.ap-northeast-3.amazonaws.com  |  HTTPS HTTPS  | 
| 아시아 태평양(하이데라바드) | ap-south-2 |  opensearch.ap-south-2.amazonaws.com es.ap-south-2.amazonaws.com  |  HTTPS HTTPS  | 
| 유럽(스페인) | eu-south-2 |  opensearch.eu-south-2.amazonaws.com es.eu-south-2.amazonaws.com  |  HTTPS HTTPS  | 
| 미국 서부(캘리포니아 북부) | us-west-1 |  opensearch.us-west-1.amazonaws.com es.us-west-1.amazonaws.com  |  HTTPS HTTPS  | 
| 유럽(취리히) | eu-central-2 |  opensearch.eu-central-2.amazonaws.com es.eu-central-2.amazonaws.com  |  HTTPS HTTPS  | 
| 유럽(밀라노) | eu-south-1 |  opensearch.eu-south-1.amazonaws.com es.eu-south-1.amazonaws.com  |  HTTPS HTTPS  | 

## OpenSearch UI Service Quotas
<a name="opensearch-ui-dashboards-quotas"></a>

 AWS 계정에는 OpenSearch UI 리소스와 관련된 다음과 같은 할당량이 있습니다.


| 이름 | 기본값 | 조정 가능 | 참고 | 
| --- | --- | --- | --- | 
| 리전별 계정당 OpenSearch UI 애플리케이션 | 30 | 예 |  리전별로 계정당 생성할 수 있는 최대 OpenSearch UI 애플리케이션 수입니다. 서비스 할당량을 사용하여 이 한도를 50개로 늘리고 자동으로 승인받을 수 있습니다. 더 높은 한도를 요청하려면 지원 티켓을 제출합니다.  | 