

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

# Amazon OpenSearch Serverless에 대한 SAML 인증
<a name="serverless-saml"></a>

Amazon OpenSearch Serverless에 대한 SAML 인증을 사용하면 기존 자격 증명 공급자를 사용하여 서버리스 컬렉션의 OpenSearch Dashboards에 통합 인증(SSO)을 제공할 수 있습니다.

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

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

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

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


**Topics**
+ [고려 사항](#serverless-saml-considerations)
+ [필요한 권한](#serverless-saml-permissions)
+ [SAML 공급자 생성(콘솔)](#serverless-saml-creating)
+ [OpenSearch 대시보드 액세스](#serverless-saml-dashboards)
+ [컬렉션 데이터에 대한 SAML 자격 증명 액세스 권한 부여](#serverless-saml-policies)
+ [SAML 공급자 생성(AWS CLI)](#serverless-saml-creating-api)
+ [SAML 공급자 보기](#serverless-saml-viewing)
+ [SAML 공급자 업데이트](#serverless-saml-updating)
+ [SAML 공급자 삭제](#serverless-saml-deleting)

## 고려 사항
<a name="serverless-saml-considerations"></a>

SAML 인증을 구성할 때는 다음 사항을 고려하세요.
+ 서명 및 암호화된 요청은 지원되지 않습니다.
+ 암호화된 어설션은 지원되지 않습니다.
+ IdP 시작 인증 및 로그아웃은 지원되지 않습니다.
+ 서비스 제어 정책(SCP)은 IAM이 아닌 자격 증명(Amazon OpenSearch Serverless의 SAML 및 SAML과 Amazon OpenSearch Service의 기본 내부 사용자 권한 부여)의 경우 적용되거나 평가되지 않습니다.

## 필요한 권한
<a name="serverless-saml-permissions"></a>

OpenSearch Serverless에 대한 SAML 인증은 다음 AWS Identity and Access Management (IAM) 권한을 사용합니다.
+ `aoss:CreateSecurityConfig` – SAML 공급자를 생성합니다.
+ `aoss:ListSecurityConfig` – 현재 계정의 모든 SAML 공급자를 나열합니다.
+ `aoss:GetSecurityConfig` – SAML 공급자 정보를 봅니다.
+ `aoss:UpdateSecurityConfig` – XML 메타데이터를 포함하여 주어진 SAML 공급자 구성을 수정합니다.
+ `aoss:DeleteSecurityConfig` – SAML 공급자를 삭제합니다.

다음 자격 증명 기반 액세스 정책을 통해 사용자는 모든 IdP 구성을 관리할 수 있습니다.

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

****  

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

------

`Resource` 요소는 와일드카드여야 한다는 점에 유의하세요.

## SAML 공급자 생성(콘솔)
<a name="serverless-saml-creating"></a>

이 단계에서는 SAML 공급자를 생성하는 방법을 설명합니다. 이를 통해 OpenSearch Dashboards에 대한 서비스 공급자(SP) 시작 인증을 통한 SAML 인증이 활성화됩니다. IdP 시작 인증은 지원되지 않습니다.

**OpenSearch Dashboards에 대해 SAML 인증 활성화하기**

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

1. 왼쪽 탐색 패널에서 **Serverless**(서버리스)를 확장하고 **SAML authentication**(SAML 인증)을 선택합니다.

1. **Add SAML provider**(SAML 공급자 추가)를 선택합니다.

1. 공급자의 이름 및 설명을 입력합니다.
**참고**  
지정하는 이름은 공개적으로 액세스할 수 있으며 사용자가 OpenSearch Dashboards에 로그인할 때 드롭다운 메뉴에 나타납니다. 이름을 쉽게 알아볼 수 있고 자격 증명 공급자에 대한 민감한 정보가 드러나지 않는지 확인하세요.

1. **Configure your IdP**(IDP 구성)에서 어설션 소비자 서비스(ACS) URL을 복사합니다.

1. 방금 복사한 ACS URL을 사용하여 자격 증명 공급자를 구성합니다. 용어 및 단계는 공급자마다 다릅니다. 공급자의 설명서를 참조하세요.

   예를 들어 Okta에서는 “SAML 2.0 웹 애플리케이션”을 생성하고 ACS URL을 **Single Sign On URL**, **Recipient URL**(수신 URL), **Destination URL**(대상 URL)로 지정합니다. Auth0의 경우 **Allowed Callback URLs**(허용된 콜백 URL)에서 이를 지정합니다.

1. IdP에 대상 제한 필드가 있는 경우 이를 입력합니다. 대상 제한은 어설션의 대상을 지정하는 SAML 어설션 내의 값입니다. OpenSearch Serverless를 사용하면 다음을 수행할 수 있습니다. 다음 코드 예제의 *콘텐츠를* 자신의 AWS 계정 ID로 바꿔야 합니다.

   1. 기본 대상 제한 `:opensearch:111122223333`을 사용합니다.

   1. (선택 사항) AWS CLI를 사용하여 사용자 지정 대상 제한을 구성합니다. 자세한 내용은 [SAML 공급자 생성(AWS CLI)](#serverless-saml-creating-api) 단원을 참조하십시오.

   대상 제한 필드의 이름은 공급자마다 다릅니다. Okta의 경우 **Audience URI (SP Entity ID)**(대상 URI(SP 엔터티 ID))입니다. IAM Identity Center의 경우 **Application SAML audience**(애플리케이션 SAML 대상)입니다.

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

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

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

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

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

   다음 예시는 SAML 어설션에서 `NameID`에 대한 재정의 속성을 보여줍니다.

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

1. (선택 사항) **Group attribute**(그룹 특성) 필드에 `role` 또는 `group`과 같은 사용자 지정 특성을 지정합니다. 단일 그룹 속성만 지원됩니다. 기본 그룹 속성은 없습니다. 지정하지 않는 경우 데이터 액세스 정책에는 사용자 보안 주체만 포함될 수 있습니다.

   다음 예시는 SAML 어설션의 그룹 특성을 보여줍니다.

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

1. 기본적으로 OpenSearch Dashboards는 24시간 후에 사용자를 로그아웃합니다. **OpenSearch 대시보드 제한 시간**을 지정하여 이 값을 1\$112시간(15\$1720분) 사이의 숫자로 구성할 수 있습니다. 제한 시간을 15분 이하로 설정하려는 경우 세션이 1시간으로 재설정됩니다.

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

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

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

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

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


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

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

## 컬렉션 데이터에 대한 SAML 자격 증명 액세스 권한 부여
<a name="serverless-saml-policies"></a>

SAML 공급자를 만든 후에도 기본 사용자 및 그룹에 컬렉션 내 데이터에 대한 액세스 권한을 부여해야 합니다. [데이터 액세스 정책](serverless-data-access.md)을 통해 액세스 권한을 부여합니다. 사용자에게 액세스 권한을 부여하기까지는 사용자가 컬렉션 내 데이터를 읽거나 쓰거나 삭제할 수 없습니다.

액세스 권한을 부여하려면 데이터 액세스 정책을 생성하고 `Principal` 명령문에 SAML 사용자 및/또는 그룹 ID를 지정합니다.

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

컬렉션, 인덱스 또는 둘 다에 대한 액세스 권한을 부여할 수 있습니다. 사용자마다 다른 권한을 가지게 하려면 규칙을 여러 개 만듭니다. 사용 가능한 권한 목록은 [지원되는 정책 권한](serverless-data-access.md#serverless-data-supported-permissions)을 참조하세요. 액세스 정책의 형식 지정 방법에 대한 자세한 내용은 [정책 구문](serverless-data-access.md)을 참조하세요.

## SAML 공급자 생성(AWS CLI)
<a name="serverless-saml-creating-api"></a>

OpenSearch Serverless API를 사용하여 SAML 공급자를 생성하려면 [CreateSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityConfig.html) 요청을 보냅니다.

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

.json 파일 내의 키-값 맵으로 메타데이터 XML을 포함하여 `saml-options`를 지정합니다. 메타데이터 XML은 [JSON 이스케이프 문자열](https://www.freeformatter.com/json-escape.html)로 인코딩되어야 합니다.

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

**참고**  
(선택 사항) AWS CLI를 사용하여 사용자 지정 대상 제한을 구성합니다. 자세한 내용은 [SAML 공급자 생성(AWS CLI)](#serverless-saml-creating-api) 단원을 참조하십시오.

## SAML 공급자 보기
<a name="serverless-saml-viewing"></a>

다음 [ListSecurityConfigs](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListSecurityConfigs.html) 요청은 계정의 모든 SAML 공급자를 나열합니다.

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

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

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

향후 업데이트를 위한 `configVersion`을 포함하여 특정 공급자에 대한 세부 정보를 보려면 `GetSecurityConfig` 요청을 보냅니다.

## SAML 공급자 업데이트
<a name="serverless-saml-updating"></a>

OpenSearch Serverless 콘솔을 사용하여 SAML 공급자를 업데이트하려면 **SAML authentication**(SAML 인증)을 선택하고 자격 증명 공급자를 선택한 다음 **Edit**(편집)를 선택합니다. 메타데이터 및 사용자 지정 속성을 포함하여 모든 필드를 수정할 수 있습니다.

OpenSearch Serverless API를 통해 공급자를 업데이트하려면 [UpdateSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityConfig.html) 요청을 보내고 업데이트할 정책의 식별자를 포함합니다. `ListSecurityConfigs` 또는 `GetSecurityConfig` 명령을 사용하여 검색할 수 있는 구성 버전도 포함해야 합니다. 최신 버전을 포함하면 다른 사람이 변경한 내용을 실수로 재정의하지 않습니다.

다음 요청은 공급자의 SAML 옵션을 업데이트합니다.

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

SAML 구성 옵션을 .json 파일 내의 키-값 맵으로 지정합니다.

**중요**  
**SAML 옵션에 대한 업데이트는 증분되지 **않습니다**. 업데이트할 때 `SAMLOptions` 객체의 파라미터 값을 지정하지 않으면 기존 값이 빈 값으로 재정의됩니다. 예를 들어 현재 구성에 `userAttribute`에 대한 값이 포함된 경우 업데이트를 수행하고 이 값을 포함하지 않으면 해당 값이 구성에서 제거됩니다. `GetSecurityConfig` 작업을 호출하여 업데이트하기 전에 기존 값이 무엇인지 확인합니다.

## SAML 공급자 삭제
<a name="serverless-saml-deleting"></a>

SAML 공급자를 삭제하면 데이터 액세스 정책에서 연결된 사용자 및 그룹에 대한 모든 참조가 더 이상 작동하지 않습니다. 혼동을 피하려면 엔드포인트를 삭제하기 전에 액세스 정책에서 엔드포인트에 대한 모든 참조를 제거하는 것이 좋습니다.

OpenSearch Serverless 콘솔을 사용하여 SAML 공급자를 삭제하려면 **Authentication**(인증)을 선택하고 공급자를 선택한 다음 **Delete**(삭제)를 선택합니다.

OpenSearch Serverless API를 통해 공급자를 삭제하려면 [DeleteSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteSecurityConfig.html) 요청을 보냅니다.

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