Amazon OpenSearch 서버리스의 데이터 액세스 제어 - Amazon OpenSearch Service

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

Amazon OpenSearch 서버리스의 데이터 액세스 제어

Amazon OpenSearch Serverless의 데이터 액세스 제어를 사용하면 액세스 메커니즘이나 네트워크 소스에 관계없이 사용자가 컬렉션과 인덱스에 액세스하도록 허용할 수 있습니다. IAM 역할 및 SAML ID에 대한 액세스를 제공할 수 있습니다.

컬렉션 및 인덱스 리소스에 적용되는 데이터 액세스 정책을 통해 액세스 권한을 관리합니다. 데이터 액세스 정책을 사용하면 특정 패턴과 일치하는 컬렉션 및 인덱스에 액세스 권한을 자동으로 할당하여 컬렉션을 대규모로 관리하는 데 도움이 됩니다. 단일 리소스에 여러 데이터 액세스 정책을 적용할 수 있습니다. OpenSearch 대시보드 URL에 액세스하려면 컬렉션에 대한 데이터 액세스 정책이 있어야 한다는 점에 유의하십시오.

데이터 액세스 정책 대 IAM 정책

데이터 액세스 정책은 AWS Identity and Access Management (IAM) 정책과 논리적으로 분리되어 있습니다. IAM 권한은 CreateCollectionListAccessPolicies와 같은 서버리스 API 작업에 대한 액세스를 제어합니다. 데이터 액세스 정책은 OpenSearch 서버리스가 지원하는 OpenSearch 작업 (예: 또는) 에 대한 액세스를 제어합니다. PUT <index> GET _cat/indices

aoss:CreateAccessPolicyaoss:GetAccessPolicy(다음 섹션에서 설명)와 같은 데이터 액세스 정책 API 작업에 대한 액세스를 제어하는 IAM 권한은 데이터 액세스 정책에 지정된 권한에 영향을 미치지 않습니다.

예를 들어 IAM 정책이 사용자의 collection-a에 대한 데이터 액세스 정책 생성을 거부하지만 모든 컬렉션(*)에 대한 데이터 액세스 정책을 생성할 수 있도록 허용한다고 가정해 보겠습니다.

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

사용자가 모든 컬렉션(collection/* 또는 index/*/*)에 특정 권한을 허용하는 데이터 액세스 정책을 생성하면 해당 정책은 컬렉션 A를 포함한 모든 컬렉션에 적용됩니다.

중요

데이터 액세스 정책 내에서 권한을 부여하는 것만으로는 OpenSearch 서버리스 컬렉션의 데이터에 액세스하는 데 충분하지 않습니다. 또한 관련 보안 주체에게 IAM 권한 aoss:APIAccessAllaoss:DashboardsAccessAll에 대한 액세스 권한을 부여해야 합니다. 두 권한 모두 컬렉션 리소스에 대한 전체 액세스 권한을 부여하는 반면, 대시보드 권한은 대시보드에 대한 액세스 권한도 제공합니다. OpenSearch 보안 주체에게 이 두 IAM 권한이 모두 있지 않으면 컬렉션에 대한 요청을 보낼 때 403 오류가 발생합니다. 자세한 정보는 작업 사용 OpenSearch API을 참조하세요.

데이터 액세스 정책을 구성하는 데 필요한 IAM 권한

OpenSearch 서버리스의 데이터 액세스 제어는 다음 IAM 권한을 사용합니다. 사용자를 특정 액세스 정책 이름으로 제한하도록 IAM 조건을 지정할 수 있습니다.

  • aoss:CreateAccessPolicy – 액세스 정책을 생성합니다.

  • aoss:ListAccessPolicies – 모든 액세스 정책을 나열합니다.

  • aoss:GetAccessPolicy – 특정 액세스 정책에 대한 세부 정보를 봅니다.

  • aoss:UpdateAccessPolicy – 액세스 정책을 수정합니다.

  • aoss:DeleteAccessPolicy – 액세스 정책을 삭제합니다.

다음 자격 증명 기반 액세스 정책은 사용자가 리소스 패턴 collection/logs를 포함하는 모든 액세스 정책 및 업데이트 정책을 볼 수 있도록 허용합니다.

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

또한 OpenSearch 서버리스에는 수집 aoss:DashboardsAccessAll 리소스에 대한 aoss:APIAccessAll 및 권한이 필요합니다. 자세한 정보는 작업 사용 OpenSearch API을 참조하세요.

정책 구문

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

Element 설명
ResourceType 권한이 적용되는 리소스 유형(컬렉션 또는 인덱스)입니다. 별칭 및 템플릿 권한은 컬렉션 수준에 있고 데이터 생성, 수정, 검색 권한은 인덱스 수준에 있습니다. 자세한 내용은 지원되는 정책 권한을 참조하세요.
Resource 리소스 이름 및/또는 패턴 목록. 패턴은 와일드카드(*)가 뒤따르는 접두사로 연결된 권한을 여러 리소스에 적용할 수 있도록 합니다.
  • 컬렉션은 collection/<name|pattern> 형식을 취합니다.

  • 인덱스는 index/<collection-name|pattern>/<index-name|pattern/> 형식을 취합니다.

Permission 지정된 리소스에 대해 부여할 권한 목록입니다. 권한 및 허용되는 API 작업의 전체 목록은 지원되는 OpenSearch API 작업 및 권한 섹션을 참조하세요.
Principal 액세스 권한을 부여할 하나 이상의 보안 주체 목록입니다. 보안 주체는 IAM 역할 ARN 또는 SAML ID일 수 있습니다. 이러한 보안 주체는 현재 AWS 계정내에 있어야 합니다. 데이터 액세스 정책은 계정 간 액세스를 직접 지원하지 않지만 컬렉션 소유 계정에서 다른 사용자의 역할을 위임할 수 있는 역할을 정책에 포함할 AWS 계정 수 있습니다. 자세한 정보는 계정 간 데이터 액세스을 참조하세요.

다음 예시 정책은 autopartsinventory라는 컬렉션과 접두사 sales*로 시작하는 모든 컬렉션에 별칭 및 템플릿 권한을 부여합니다. 또한 autopartsinventory 컬렉션 내의 모든 인덱스와 접두사 orders*로 시작하는 salesorders 컬렉션의 모든 인덱스에 대한 읽기 및 쓰기 권한을 부여합니다.

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

정책 내에서는 액세스를 명시적으로 거부할 수 없습니다. 따라서 모든 정책 권한은 가산적입니다. 예를 들어 한 정책에서 사용자에게 aoss:ReadDocument 권한을 부여하고 다른 정책에서 aoss:WriteDocument 권한을 부여하면 사용자는 두 권한을 모두 가지게 됩니다. 세 번째 정책에서 동일한 사용자에게 aoss:* 권한을 부여하면 사용자는 연결된 인덱스에서 모든 작업을 수행할 수 있습니다. 더 제한적인 권한이 덜 제한적인 권한보다 우선하지는 않습니다.

지원되는 정책 권한

데이터 액세스 정책에서 지원되는 권한은 다음과 같습니다. 각 권한이 허용하는 OpenSearch API 작업에 대한 내용은 을 참조하십시오. 지원되는 OpenSearch API 작업 및 권한

컬렉션 권한

  • aoss:CreateCollectionItems

  • aoss:DeleteCollectionItems

  • aoss:UpdateCollectionItems

  • aoss:DescribeCollectionItems

  • aoss:*

인덱스 권한

  • aoss:ReadDocument

  • aoss:WriteDocument

  • aoss:CreateIndex

  • aoss:DeleteIndex

  • aoss:UpdateIndex

  • aoss:DescribeIndex

  • aoss:*

대시보드의 샘플 데이터셋 OpenSearch

OpenSearch 대시보드는 데이터를 추가하기 전에 대시보드를 탐색하는 데 도움이 되는 시각화, 대시보드 및 기타 도구와 함께 제공되는 샘플 데이터세트를 제공합니다. 이 샘플 데이터로 인덱스를 만들려면 작업하려는 데이터 세트에 권한을 부여하는 데이터 액세스 정책이 필요합니다. 다음 정책은 와일드카드(*)를 사용하여 세 샘플 데이터 세트 모두에 권한을 부여합니다.

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

데이터 액세스 정책 생성(콘솔)

시각적 편집기를 사용하거나 JSON 형식으로 데이터 액세스 정책을 생성할 수 있습니다. 정책에 정의된 패턴 중 하나와 일치하는 모든 새 컬렉션에는 컬렉션을 생성할 때 해당 권한이 할당됩니다.

서버리스 데이터 액세스 정책을 만들려면 OpenSearch
  1. https://console.aws.amazon.com/aos/home 에서 아마존 OpenSearch 서비스 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 Serverless(서버리스)를 확장하고 Data access control(데이터 액세스 제어)을 선택합니다.

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

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

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

  6. Add principals(보안 주체 추가)를 선택하고 데이터 액세스를 제공할 하나 이상의 IAM 역할 또는 SAML 사용자 및 그룹을 선택합니다.

    참고

    드롭다운 메뉴에서 보안 주체를 선택하려면 iam:ListUsersiam:ListRoles 권한(IAM 보안 주체의 경우)과 aoss:ListSecurityConfigs 권한(SAML 자격 증명의 경우)이 있어야 합니다.

  7. Grant(부여)를 선택하고 별칭, 템플릿, 인덱스 권한을 선택하여 연관된 보안 주체에게 부여합니다. 전체 권한 및 해당 목록에서 허용되는 액세스는 지원되는 OpenSearch API 작업 및 권한 섹션을 참조하세요.

  8. (선택 사항) 정책에 대한 추가 규칙을 구성합니다.

  9. 생성을 선택합니다. 정책을 만든 시점과 권한이 적용된 시점 사이에 약 1분의 지연 시간이 있을 수 있습니다. 5분 넘게 소요될 경우 AWS Support에 문의하세요.

중요

정책에 인덱스 권한만 포함되어 있고 컬렉션 권한은 없는 경우 Collection cannot be accessed yet. Configure data access policies so that users can access the data within this collection이라는 일치하는 컬렉션에 대한 메시지가 계속 표시될 수 있습니다. 이 경고는 무시해도 됩니다. 허용된 보안 주체는 여전히 컬렉션에서 할당된 인덱스 관련 작업을 수행할 수 있습니다.

데이터 액세스 정책 생성(AWS CLI)

OpenSearch 서버리스 API를 사용하여 데이터 액세스 정책을 생성하려면 CreateAccessPolicy 명령을 사용합니다. 이 명령은 인라인 정책과 .json 파일을 모두 허용합니다. 인라인 정책은 JSON 이스케이프 문자열로 인코딩해야 합니다.

다음 요청은 데이터 액세스 정책을 생성합니다.

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

.json 파일 내에 정책을 제공하려면 --policy file://my-policy.json 형식을 사용합니다.

정책에 포함된 보안 주체는 이제 액세스 권한이 부여된 OpenSearch 작업을 사용할 수 있습니다.

데이터 액세스 정책 보기

컬렉션을 생성하기 전에 계정의 기존 데이터 액세스 정책을 미리 보고 컬렉션 이름과 일치하는 리소스 패턴을 가진 정책을 확인하는 것이 좋습니다. 다음 ListAccessPolicies요청에는 계정의 모든 데이터 액세스 정책이 나열되어 있습니다.

aws opensearchserverless list-access-policies --type data

요청은 구성된 모든 데이터 액세스 정책에 대한 정보를 반환합니다. 특정 정책에 정의된 패턴 규칙을 보려면 응답의 accessPolicySummaries 요소 내용에서 정책 정보를 찾으십시오. 이 type 정책의 종료를 기록하고 GetAccessPolicy요청에 이러한 속성을 사용하여 다음 정책 세부 정보가 포함된 응답을 받으십시오. name

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

리소스 필터를 포함하여 결과를 특정 컬렉션 또는 인덱스가 포함된 정책으로 제한할 수 있습니다.

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

특정 정책에 대한 세부 정보를 보려면 GetAccessPolicy명령을 사용합니다.

데이터 액세스 정책 업데이트

데이터 액세스 정책을 업데이트하면 모든 관련 컬렉션이 영향을 받습니다. OpenSearch 서버리스 콘솔에서 데이터 액세스 정책을 업데이트하려면 데이터 액세스 제어를 선택하고 수정할 정책을 선택한 다음 편집을 선택합니다. 변경하고 Save(저장)를 선택합니다.

OpenSearch 서버리스 API를 사용하여 데이터 액세스 정책을 업데이트하려면 요청을 UpdateAccessPolicy 보내십시오. ListAccessPolicies 또는 GetAccessPolicy 명령을 사용하여 검색할 수 있는 정책 버전을 포함해야 합니다. 최신 정책 버전을 포함하면 다른 사람이 변경한 내용을 실수로 재정의하지 않습니다.

다음 UpdateAccessPolicy요청은 새 정책 JSON 문서로 데이터 액세스 정책을 업데이트합니다.

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

정책을 업데이트하는 시점과 새 권한이 적용되는 시점 사이에 몇 분의 지연 시간이 있을 수 있습니다.

데이터 액세스 정책 삭제

데이터 액세스 정책을 삭제하면 연결된 모든 컬렉션이 정책에 정의된 액세스 권한을 잃게 됩니다. 정책을 삭제하기 전에 IAM 및 SAML 사용자에게 컬렉션에 대한 적절한 액세스 권한이 있는지 확인하세요. OpenSearch 서버리스 콘솔에서 정책을 삭제하려면 정책을 선택하고 삭제를 선택합니다.

다음 DeleteAccessPolicy명령을 사용할 수도 있습니다.

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

계정 간 데이터 액세스

교차 계정 ID 또는 교차 계정 수집을 사용하여 데이터 액세스 정책을 만들 수는 없지만 역할 수임 옵션을 사용하여 계정 간 액세스를 설정할 수는 있습니다. 예를 들어 액세스가 account-b 필요한 컬렉션을 account-a 소유한 경우 의 사용자가 해당 역할을 맡을 account-b 수 있습니다. account-a 역할에는 IAM 권한이 있어야 aoss:APIAccessAll aoss:DashboardsAccessAll 하며 데이터 액세스 정책에 포함되어야 합니다. account-a