Amazon OpenSearch Serverless에 대한 SAML 인증 - Amazon OpenSearch 서비스

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

Amazon OpenSearch Serverless에 대한 SAML 인증

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 사용 설명서의 시작하기 자습서를 참조하세요.

참고

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

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

SAML authentication flow with data access policy, OpenSearch interface, and JSON configuration.

고려 사항

SAML 인증을 구성할 때는 다음 사항을 고려하세요.

  • 서명 및 암호화된 요청은 지원되지 않습니다.

  • 암호화된 어설션은 지원되지 않습니다.

  • IdP 시작 인증 및 로그아웃은 지원되지 않습니다.

  • 서비스 제어 정책(SCP)은 IAM이 아닌 자격 증명(Amazon OpenSearch Serverless의 SAML 및 SAML과 Amazon OpenSearch Service의 기본 내부 사용자 권한 부여)의 경우 적용되거나 평가되지 않습니다.

필요한 권한

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 구성을 관리할 수 있습니다.

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

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

SAML 공급자 생성(콘솔)

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

OpenSearch Dashboards에 대해 SAML 인증 활성화하기
  1. https://console.aws.amazon.com/aos/home에서 Amazon OpenSearch Service 콘솔에 로그인합니다.

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

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

  4. 공급자의 이름 및 설명을 입력합니다.

    참고

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

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

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

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

  7. IdP에 대상 제한 필드가 있는 경우 이를 입력합니다. 대상 제한은 어설션의 대상을 지정하는 SAML 어설션 내의 값입니다. OpenSearch Serverless의 경우 aws:opensearch:<aws account id>를 지정합니다. 예: aws:opensearch:123456789012.

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

  8. IAM Identity Center를 사용하는 경우 unspecified 형식의 Subject=${user:name} 속성 매핑도 지정해야 합니다.

  9. 자격 증명 공급자를 구성하면 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>
  10. 사용자 이름에 대한 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>
  11. (선택 사항) 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>
  12. 기본적으로 OpenSearch Dashboards는 24시간 후에 사용자를 로그아웃합니다. OpenSearch 대시보드 제한 시간을 지정하여 이 값을 1~12시간(15~720분) 사이의 숫자로 구성할 수 있습니다. 제한 시간을 15분 이하로 설정하려는 경우 세션이 1시간으로 재설정됩니다.

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

OpenSearch 대시보드 액세스

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

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

OpenSearch login page with dropdown menu for selecting SAML Identity Provider options.

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

SAML을 활성화하지 않은 경우 AWS Management Console에서 링크를 선택하면 SAML 옵션 없이 IAM 사용자 또는 역할로 로그인할 수 있습니다.

컬렉션 데이터에 대한 SAML 자격 증명 액세스 권한 부여

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

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

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

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

SAML 공급자 생성(AWS CLI)

OpenSearch Serverless API를 사용하여 SAML 공급자를 생성하려면 CreateSecurityConfig 요청을 보냅니다.

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

.json 파일 내의 키-값 맵으로 메타데이터 XML을 포함하여 saml-options를 지정합니다. 메타데이터 XML은 JSON 이스케이프 문자열로 인코딩되어야 합니다.

{ "sessionTimeout": 70, "groupAttribute": "department", "userAttribute": "userid", "metadata": "<EntityDescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" ... ... ... IDPSSODescriptor>\r\n<\/EntityDescriptor>" }

SAML 공급자 보기

다음 ListSecurityConfigs 요청은 계정의 모든 SAML 공급자를 나열합니다.

aws opensearchserverless list-security-configs --type saml

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

{ "securityConfigDetails": [ { "configVersion": "MTY2NDA1MjY4NDQ5M18x", "createdDate": 1664054180858, "description": "Example SAML provider", "id": "saml/123456789012/myprovider", "lastModifiedDate": 1664054180858, "samlOptions": { "groupAttribute": "department", "metadata": "<EntityDescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" ... ... ... IDPSSODescriptor>\r\n<\/EntityDescriptor>", "sessionTimeout": 120, "userAttribute": "userid" } } ] }

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

SAML 공급자 업데이트

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

OpenSearch Serverless API를 통해 공급자를 업데이트하려면 UpdateSecurityConfig 요청을 보내고 업데이트할 정책의 식별자를 포함합니다. 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 공급자 삭제

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

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

OpenSearch Serverless API를 통해 공급자를 삭제하려면 DeleteSecurityConfig 요청을 보냅니다.

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