Amazon OpenSearch Serverless 암호화 - Amazon OpenSearch 서비스

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

Amazon OpenSearch Serverless 암호화

저장 중 암호화

생성한 각 Amazon OpenSearch Serverless 컬렉션은 데이터에 대한 무단 액세스를 방지하는 보안 기능인 저장 데이터의 암호화로 보호됩니다. 저장된 암호화는 AWS Key Management Service(AWS KMS)를 사용하여 암호화 키를 저장하고 관리합니다. 암호화를 수행하기 위해 256비트 키(AES-256)가 있는 고급 암호화 표준 알고리즘을 사용합니다.

암호화 정책

암호화 정책을 사용하면 특정 이름 또는 패턴과 일치하는 새로 생성한 컬렉션에 암호화 키를 자동으로 할당하여 여러 컬렉션을 대규모로 관리할 수 있습니다.

암호화 정책을 생성할 때 MyCollection*과 같은 와일드카드 기반 일치 규칙인 접두사를 지정하거나 단일 컬렉션 이름을 입력할 수 있습니다. 그런 다음 해당 이름 또는 접두사 패턴과 일치하는 컬렉션을 생성하면 정책과 해당 KMS 키가 자동으로 컬렉션에 할당됩니다.

Encryption policy creation process with rules and collection matching to KMS key.

암호화 정책에는 다음 요소가 포함됩니다.

  • Rules – 각각 다음과 같은 하위 요소가 포함된 하나 이상의 컬렉션 일치 규칙:

    • ResourceType – 현재 유일한 옵션은 “컬렉션”입니다. 암호화 정책은 컬렉션 리소스에만 적용됩니다.

    • Resourcecollection/<collection name|pattern> 형식으로 정책이 적용될 하나 이상의 컬렉션 이름 또는 패턴입니다.

  • AWSOwnedKey – AWS 소유 키를 사용할지 여부.

  • KmsARNAWSOwnedKey를 false로 설정한 경우 연결된 컬렉션을 암호화할 KMS 키의 Amazon 리소스 이름(ARN)을 지정합니다. 이 파라미터를 포함하면 OpenSearch Serverless는 AWSOwnedKey 파라미터를 무시합니다.

다음 샘플 정책은 autopartsinventory라는 이름의 향후 컬렉션과 “sales”라는 용어로 시작하는 컬렉션에 고객 관리형 키를 할당합니다.

{ "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/autopartsinventory", "collection/sales*" ] } ], "AWSOwnedKey":false, "KmsARN":"arn:aws:encryption:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36" }

정책이 컬렉션 이름과 일치하더라도 리소스 패턴에 와일드카드(*)가 포함된 경우 컬렉션 생성 중에 이 자동 할당을 재정의하도록 선택할 수 있습니다. 자동 키 할당을 재정의하도록 선택하면 OpenSearch Serverless는 auto-<collection-name>이라는 암호화 정책을 생성하여 컬렉션에 연결합니다. 정책은 처음에는 단일 컬렉션에만 적용되지만 추가 컬렉션을 포함하도록 수정할 수 있습니다.

컬렉션과 더 이상 일치하지 않도록 정책 규칙을 수정하면 해당 컬렉션에서 연결된 KMS 키 할당이 취소되지 않습니다. 컬렉션은 항상 초기 암호화 키로 암호화된 상태로 유지됩니다. 컬렉션의 암호화 키를 변경하려면 컬렉션을 다시 생성해야 합니다.

여러 정책의 규칙이 컬렉션과 일치하는 경우 더 구체적인 규칙이 사용됩니다. 예를 들어 한 정책에 collection/log*에 대한 규칙이 포함되어 있고 다른 정책에 collection/logSpecial에 대한 규칙이 포함된 경우 더 구체적이기 때문에 두 번째 정책에 대한 암호화 키가 사용됩니다.

다른 정책에 이름이나 접두사가 이미 있는 경우 정책에서 이를 사용할 수 없습니다. 다른 암호화 정책에서 동일한 리소스 패턴을 구성하려고 하면 OpenSearch Serverless에 오류가 표시됩니다.

고려 사항

컬렉션의 암호화를 구성할 때 다음 사항을 고려하세요.

  • 저장된 암호화는 모든 서버리스 컬렉션에 필수입니다.

  • 고객 관리형 키 또는 AWS 소유 키를 사용할 수 있습니다. 고객 관리형 키를 선택하는 경우 자동 키 교체를 활성화하는 것이 좋습니다.

  • 컬렉션을 생성한 후에는 컬렉션의 암호화 키를 변경할 수 없습니다. 컬렉션을 처음 설정할 때 사용할 AWS KMS를 신중하게 선택하세요.

  • 컬렉션은 단일 암호화 정책과만 일치할 수 있습니다.

  • 고유한 KMS 키가 있는 컬렉션은 OpenSearch 컴퓨팅 유닛(OCU)을 다른 컬렉션과 공유할 수 없습니다. 고유 키가 있는 각 컬렉션에는 고유한 4개의 OCU가 필요합니다.

  • 암호화 정책에서 KMS 키를 업데이트하는 경우 변경 사항은 KMS 키가 이미 할당된 일치하는 기존 컬렉션에 영향을 미치지 않습니다.

  • OpenSearch Serverless는 고객 관리형 키에 대한 사용자 권한을 명시적으로 확인하지 않습니다. 사용자가 데이터 액세스 정책을 통해 컬렉션에 액세스할 권한이 있는 경우 연결된 키로 암호화된 데이터를 수집하고 쿼리할 수 있습니다.

필요한 권한

OpenSearch Serverless의 저장된 암호화는 다음 AWS Identity and Access Management(IAM) 권한을 사용합니다. 사용자를 특정 컬렉션으로 제한하도록 IAM 조건을 지정할 수 있습니다.

  • aoss:CreateSecurityPolicy – 암호화 정책을 생성합니다.

  • aoss:ListSecurityPolicies – 모든 암호화 정책과 해당 정책이 연결된 컬렉션을 나열합니다.

  • aoss:GetSecurityPolicy – 특정 암호화 정책의 세부 정보를 봅니다.

  • aoss:UpdateSecurityPolicy – 암호화 정책을 수정합니다.

  • aoss:DeleteSecurityPolicy – 암호화 정책을 삭제합니다.

다음 샘플 ID 기반 액세스 정책은 사용자가 collection/application-logs 리소스 패턴으로 암호화 정책을 관리하는 데 필요한 최소 권한을 제공합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "aoss:CreateSecurityPolicy", "aoss:UpdateSecurityPolicy", "aoss:DeleteSecurityPolicy", "aoss:GetSecurityPolicy" ], "Resource":"*", "Condition":{ "StringEquals":{ "aoss:collection":"application-logs" } } }, { "Effect":"Allow", "Action":[ "aoss:ListSecurityPolicies" ], "Resource":"*" } ] }

고객 관리형 키에 대한 키 정책

컬렉션을 보호하기 위해 고객 관리형 키를 선택하면 OpenSearch Serverless는 선택한 보안 주체를 대신하여 KMS 키를 사용할 수 있는 권한을 얻습니다. 해당 보안 주체, 즉 사용자 또는 역할은 OpenSearch Serverless에 필요한 KMS 키에 대한 권한이 있어야 합니다. 키 정책 또는 IAM 정책에서 이러한 권한을 제공할 수 있습니다.

OpenSearch Serverless는 고객 관리형 키에 대해 최소한 다음 권한이 있어야 합니다.

예:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "aoss.us-east-1.amazonaws.com" }, "Bool": { "kms:GrantIsForAWSResource": "true" } } } ] }

OpenSearch Serverless는 kms:GenerateDataKeykms:Decrypt 권한으로 권한 부여를 생성합니다.

자세한 내용은 AWS Key Management Service 개발자 안내서에서 AWS KMS의 키 정책 사용을 참조하세요.

OpenSearch Serverless가 AWS KMS에서 권한 부여를 사용하는 방법

OpenSearch Serverless는 고객 관리형 키를 사용하기 위해 권한 부여가 필요합니다.

새 키를 사용하여 계정에서 암호화 정책을 생성하면 OpenSearch Serverless는 AWS KMS에 CreateGrant 요청을 전송하고 사용자를 대신하여 권한 부여를 생성합니다. AWS KMS의 권한 부여는 고객 계정의 KMS 키에 대한 OpenSearch Serverless 액세스 권한을 부여하는 데 사용됩니다.

OpenSearch Serverless는 다음 내부 작업에 대해 고객 관리형 키를 사용할 수 있는 권한이 필요합니다.

  • DescribeKey 요청을 AWS KMS에 전송하여 제공된 대칭 고객 관리 키 ID가 유효한지 확인합니다.

  • GenerateDataKey 요청을 KMS 키로 전송하여 객체를 암호화하는 데 사용할 데이터 키를 생성합니다.

  • 데이터를 암호화하는 데 사용할 수 있도록 암호화된 데이터 키를 해독하려면 Decrypt 요청을 AWS KMS에 보냅니다.

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

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

암호화 정책 생성(콘솔)

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

OpenSearch Serverless 암호화 정책 생성하기
  1. https://console.aws.amazon.com/aos/home에서 Amazon OpenSearch Service 콘솔을 엽니다.

  2. 왼쪽 탐색 패널에서 Serverless(서버리스)를 확장하고 Encryption policies(암호화 정책)를 선택합니다.

  3. Create encryption policy(암호화 정책 생성)를 선택합니다.

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

  5. Resources(리소스)에서 이 암호화 정책에 대한 리소스 패턴을 하나 이상 입력합니다. 패턴 중 하나와 일치하는 현재 AWS 계정 및 리전에서 새로 생성된 컬렉션은 모두 자동으로 이 정책에 할당됩니다. 예를 들어 와일드카드 없이 ApplicationLogs를 입력하고 나중에 해당 이름으로 컬렉션을 생성하면 정책과 해당 KMS 키가 해당 컬렉션에 할당됩니다.

    이름이 Logs로 시작하는 새 컬렉션에 정책을 할당하는 Logs*와 같은 접두사를 입력할 수도 있습니다. 와일드카드를 사용하면 여러 컬렉션의 암호화 설정을 대규모로 관리할 수 있습니다.

  6. Encryption(암호화)에서 사용할 KMS 키를 선택합니다.

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

다음 단계: 컬렉션 생성

하나 이상의 암호화 정책을 구성한 후 해당 정책에 정의된 규칙과 일치하는 컬렉션을 생성할 수 있습니다. 지침은 컬렉션 생성 단원을 참조하십시오.

컬렉션 생성의 Encryptions(암호화) 단계에서 OpenSearch Serverless는 입력한 이름이 암호화 정책에 정의된 패턴과 일치함을 알리고 해당 KMS 키를 컬렉션에 자동으로 할당합니다. 리소스 패턴에 와일드카드(*)가 포함된 경우 일치 항목을 재정의하고 고유한 키를 선택할 수 있습니다.

암호화 정책 생성(AWS CLI)

OpenSearch Serverless API 작업을 사용하여 암호화 정책을 생성하려면 리소스 패턴과 암호화 키를 JSON 형식으로 지정합니다. CreateSecurityPolicy 요청은 인라인 정책과 .json 파일을 모두 허용합니다.

암호화 정책은 다음 형식을 사용합니다. 이 샘플 my-policy.json 파일은 이름이 sales로 시작하는 모든 컬렉션뿐만 아니라 이름이 autopartsinventory인 향후 모든 컬렉션과 일치합니다.

{ "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/autopartsinventory", "collection/sales*" ] } ], "AWSOwnedKey":false, "KmsARN":"arn:aws:encryption:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36" }

서비스 소유 키를 사용하려면 AWSOwnedKeytrue로 설정합니다.

{ "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/autopartsinventory", "collection/sales*" ] } ], "AWSOwnedKey":true }

다음 요청은 암호화 정책을 생성합니다.

aws opensearchserverless create-security-policy \ --name sales-inventory \ --type encryption \ --policy file://my-policy.json

그런 다음 CreateCollection API 작업을 사용하여 리소스 패턴 중 하나와 일치하는 하나 이상의 컬렉션을 생성합니다.

암호화 정책 보기

컬렉션을 생성하기 전에 계정의 기존 암호화 정책을 미리 보고 컬렉션 이름과 일치하는 리소스 패턴을 가진 정책을 확인하는 것이 좋습니다. 다음 ListSecurityPolicies 요청은 계정의 모든 암호화 정책을 나열합니다.

aws opensearchserverless list-security-policies --type encryption

요청은 구성된 모든 암호화 정책에 대한 정보를 반환합니다. policy 요소의 콘텐츠를 사용하여 정책에 정의된 패턴 규칙을 봅니다.

{ "securityPolicyDetails": [ { "createdDate": 1663693217826, "description": "Sample encryption policy", "lastModifiedDate": 1663693217826, "name": "my-policy", "policy": "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"]}],\"AWSOwnedKey\":true}", "policyVersion": "MTY2MzY5MzIxNzgyNl8x", "type": "encryption" } ] }

KMS 키를 포함하여 특정 정책에 대한 자세한 정보를 보려면 GetSecurityPolicy 명령을 사용합니다.

암호화 정책 업데이트

암호화 정책에서 KMS 키를 업데이트하면 변경된 이름 또는 패턴과 일치하는 새로 생성한 컬렉션에만 변경 내용이 적용됩니다. KMS 키가 이미 할당된 기존 컬렉션에는 영향을 미치지 않습니다.

정책 일치 규칙에도 동일하게 적용됩니다. 규칙을 추가, 수정 또는 삭제하면 새로 생성한 컬렉션에만 변경 사항이 적용됩니다. 더 이상 컬렉션 이름과 일치하지 않도록 정책 규칙을 수정해도 기존 컬렉션에 할당된 KMS 키는 손실되지 않습니다.

OpenSearch Serverless 콘솔에서 암호화 정책을 업데이트하려면 Encryption policies(암호화 정책)를 선택하고 수정할 정책을 선택한 다음 Edit(편집)를 선택합니다. 변경하고 Save(저장)를 선택합니다.

OpenSearch Serverless API를 사용하여 암호화 정책을 업데이트하려면 UpdateSecurityPolicy 작업을 사용합니다. 다음 요청은 새 정책 JSON 문서로 암호화 정책을 업데이트합니다.

aws opensearchserverless update-security-policy \ --name sales-inventory \ --type encryption \ --policy-version 2 \ --policy file://my-new-policy.json

암호화 정책 삭제

암호화 정책을 삭제해도 정책에 정의된 KMS 키를 현재 사용하고 있는 컬렉션은 영향을 받지 않습니다. OpenSearch Serverless 콘솔에서 정책을 삭제하려면 정책을 선택하고 Delete(삭제)를 선택합니다.

DeleteSecurityPolicy 작업을 사용할 수도 있습니다.

aws opensearchserverless delete-security-policy --name my-policy --type encryption

전송 중 암호화

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