View a markdown version of this page

Amazon Neptune 데이터 영역 작업에 대한 태그 기반 액세스 제어 - Amazon Neptune

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

Amazon Neptune 데이터 영역 작업에 대한 태그 기반 액세스 제어

태그 기반 액세스 제어(TBAC)를 사용하면 AWS 리소스 태그와 IAM 보안 주체 태그를 IAM 정책 및 서비스 제어 정책(SCPs)의 조건으로 사용하여 Amazon Neptune 데이터 영역 작업에 대한 액세스를 제어할 수 있습니다. TBAC를 사용하면 태그가 Neptune DB 클러스터의 태그와 일치하는 보안 주체만 모든 정책에서 특정 클러스터 Amazon 리소스 이름(ARNs)을 열거하지 않고도 해당 클러스터에 대한 neptune-db:* 작업을 수행할 수 있도록 할 수 있습니다.

TBAC는 Neptune의 기존 보안 모델을 기반으로 하며 작업 기반 액세스 제어 데이터 영역 작업을 보완합니다.

TBAC가 Neptune의 보안 계층에 적용되는 방식

Neptune은 중복되는 여러 보안 메커니즘을 통해 데이터를 보호합니다. TBAC는 모든 권한 부여 계층과 함께 작동하는 속성 기반 권한 부여 계층을 추가합니다.

Neptune 보안 계층 및 TBAC가 이를 보완하는 방법
계층 메커니즘 Scope
네트워크 격리 Virtual Private Cloud(VPC), 보안 그룹, VPC 엔드포인트(PrivateLink) Neptune 엔드포인트에 연결할 수 있는 호스트 제어
암호화(Encryption) 전송 중 TLS(전송 계층 보안) 1.3, 저장 시 AWS KMS관리형 암호화 데이터 기밀성 보호
IAM 인증 AWS Neptune 데이터 엔드포인트에 대한 서명 버전 4(SigV4) 서명 요청 호출자 인증
작업 기반 액세스 제어 neptune-db: 작업(ReadDataViaQueryWriteDataViaQuery, 등) 보안 주체가 수행할 수 있는 작업을 제어합니다.
조건 키 neptune-db:QueryLanguage, 글로벌 컨텍스트 키 정책에 컨텍스트 제약 조건 추가
TBAC aws:ResourceTag/${TagKey}에 대해 평가됨 aws:PrincipalTag/${TagKey} 보안 주체와 리소스 간의 태그 정렬을 기반으로 액세스를 제한합니다.
관리 태그 기반 액세스 aws:ResourceTag관리 영역 작업에 대한 rds:cluster-tag, 등 Neptune 인프라를 관리할 수 있는 사용자 제어

주요 TBAC 개념

보안 주체 태그

IAM 사용자, 역할 또는 페더레이션 세션 보안 주체에 연결된 태그입니다. IAM 콘솔 AWS CLI또는 ID 제공업체(IdP) 보안 어설션 마크업 언어(SAML)/OpenID Connect(OIDC) 속성 매핑을 통해 이를 설정할 수 있습니다.

리소스 태그

를 사용하여 Neptune DB 클러스터에 연결된 태그입니다AddTagsToResource. 이는 데이터 영역 정책 평가를 위해 클러스터의 모든 인스턴스에 전파됩니다.

조건 키 변수
  • aws:PrincipalTag/TagKey -가 호출 보안 주체의 태그 값으로 확인됩니다.

  • aws:ResourceTag/TagKey - 대상 Neptune 리소스의 태그 값으로 확인됩니다.

지원되는 정책 유형
  • IAM 자격 증명 정책 - 사용자, 그룹 또는 역할에 연결됩니다.

  • SCPs- AWS Organizations 조직 단위(OU) 또는 계정 수준에서 권한 가드레일을 설정하기 위해 적용됩니다.

TBAC를 사용하기 위한 사전 조건

Neptune 데이터 영역 작업에서 TBAC를 사용하려면 먼저 다음 사항이 있어야 합니다.

  1. Neptune 엔진 버전 1.2.0.0 이상 - 데이터 영역 TBAC 지원에 필요합니다.

  2. Neptune DB 클러스터에서 IAM 인증이 활성화되었습니다.

  3. Neptune DB 클러스터에 적용되는 태그 - 정책이 평가할 리소스 태그입니다.

  4. IAM 보안 주체에 적용된 태그 - 리소스 태그와 비교할 보안 주체 태그입니다.

TBAC 정책 패턴

다음 패턴은 Neptune 데이터 영역 작업에 대한 IAM 정책에서 TBAC를 사용하는 일반적인 방법을 보여줍니다.

보안 주체 태그와 리소스 태그가 일치하지 않는 경우 액세스 거부

이는 가장 일반적인 TBAC 패턴입니다. 보안 주체의 태그가 리소스의 태그와 일치하지 않는 한 모든 Neptune 데이터 영역 작업을 거부합니다. 이를 조직 전체의 적용을 위한 SCP 또는 대상 제어에 대한 IAM 정책으로 적용할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyNeptuneProjectMismatch", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } }, { "Sid": "DenyNeptuneDepartmentMismatch", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Department": "${aws:PrincipalTag/Department}" } } } ] }

작동 방식: 각 문은 단일 태그 키에 대해 별도의 StringNotEquals 조건을 사용합니다. 거부는 각 태그에 대해 독립적으로 트리거됩니다. 리소스의 Project 태그가 보안 주체의 Project 태그와 일치하지 않으면 Department 태그에 관계없이 액세스가 거부됩니다. 이렇게 하면 로 태그가 지정된 보안 주체가 태그가 지정된 Neptune 클러스터에만 액세스할 Project=FraudDetection 수 있으며 Project=FraudDetection에 대해서도 마찬가지로 액세스할 수 있습니다Department.

필수 리소스 태그가 누락된 경우 액세스 거부

이 패턴은 적절하게 태그가 지정되지 않은 Neptune 클러스터에 대한 액세스를 방지하여 모든 클러스터가 TBAC 체계에 등록되도록 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyNeptuneMissingProjectTag", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "Null": { "aws:ResourceTag/Project": "true" } } }, { "Sid": "DenyNeptuneMissingDepartmentTag", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "Null": { "aws:ResourceTag/Department": "true" } } } ] }

작동 방식: 지정된 태그 키가 리소스에 없는 경우 Null 조건이 true로 평가됩니다. 이렇게 하면 모든 Neptune 클러스터가 필요한 분류 태그를 전달해야 보안 주체가 액세스할 수 있습니다.

TBAC와 작업 기반 액세스 제어 결합

TBAC를 특정 neptune-db: 작업과 결합하여 세분화된 태그 인식 정책을 생성할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowReadOnlyForMatchingTags", "Effect": "Allow", "Action": [ "neptune-db:ReadDataViaQuery", "neptune-db:GetQueryStatus", "neptune-db:GetEngineStatus" ], "Resource": "arn:aws:neptune-db:*:*:*/*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] }

TBAC를 사용한 쿼리 언어 제한

TBAC를 neptune-db:QueryLanguage 조건 키와 결합하여 보안 주체가 액세스할 수 있는 클러스터와 사용할 수 있는 쿼리 언어를 모두 제한합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOpenCypherOnlyForMatchingProject", "Effect": "Allow", "Action": [ "neptune-db:ReadDataViaQuery", "neptune-db:WriteDataViaQuery" ], "Resource": "arn:aws:neptune-db:*:*:*/*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}", "neptune-db:QueryLanguage": "OpenCypher" } } } ] }

서비스 제어 정책과 함께 TBAC 사용

SCPs는 개별 IAM 정책을 변경할 필요 없이 전체 조직 단위(OU) 또는 계정에 걸쳐 권한 경계를 설정하므로 TBAC를 적용하는 데 적합합니다.

다음과 같은 SCP 전략을 권장합니다.

  1. 태그가 일치하지 않을 neptune-db:* 때 차단하는 OU 수준에서 거부 기반 SCP를 적용합니다.

  2. 태그가 지정되지 않은 리소스에 대한 액세스를 거부하는 두 번째 문을 적용합니다.

  3. 개별 계정은 특정 neptune-db: 작업에 대한 허용 정책을 유지할 수 있습니다. SCP는 가드레일 역할을 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyNeptuneProjectMismatch", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } }, { "Sid": "DenyNeptuneDepartmentMismatch", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Department": "${aws:PrincipalTag/Department}" } } }, { "Sid": "DenyNeptuneMissingProjectTag", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "Null": { "aws:ResourceTag/Project": "true" } } }, { "Sid": "DenyNeptuneMissingDepartmentTag", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "Null": { "aws:ResourceTag/Department": "true" } } } ] }

Neptune용 TBAC 구현

1단계: 태그 분류 정의

조직 경계를 나타내는 태그 키를 선택합니다. 일반적인 패턴:

태그 분류 예
태그 키 용도 예제 값
Project 애플리케이션 또는 워크로드 식별자 FraudDetection, RecommendationEngine
Department 사업부 또는 비용 센터 Engineering, Finance, Analytics
Environment 배포 단계 production, staging, development
Team 소유 팀 graph-platform, data-science

2단계: Neptune DB 클러스터에 태그 지정

AWS CLI 를 사용하여 Neptune DB 클러스터에 필요한 분류 태그를 추가합니다.

aws neptune add-tags-to-resource \ --resource-name arn:aws:rds:us-east-1:123456789012:cluster:my-neptune-cluster \ --tags Key=Project,Value=FraudDetection Key=Department,Value=Engineering

3단계: IAM 보안 주체에 태그 지정

AWS CLI 를 사용하여 Neptune 클러스터에 사용된 것과 동일한 키와 값으로 IAM 역할에 태그를 지정합니다. IAM 역할의 경우:

aws iam tag-role \ --role-name NeptuneAppRole \ --tags Key=Project,Value=FraudDetection Key=Department,Value=Engineering

페더레이션 사용자의 경우 자격 증명 공급자의 aws:PrincipalTag 속성을 사용하여 SAML/OIDC 세션 태그를 통해 태그를 전달합니다.

4단계: TBAC 정책 배포

조직 전체의 적용을 위한 SCP 또는 대상 제어에 대한 IAM 정책으로를 연결합니다.

5단계: 태그 무결성 보호

Neptune 리소스 및 IAM 보안 주체에서 태그를 수정할 수 있는 사용자를 제한합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyTagModification", "Effect": "Deny", "Action": [ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["Project", "Department"] } } } ] }

TBAC에 대한 중요 고려 사항

  • 전파 지연 - IAM 정책 변경 사항이 Neptune 리소스에 적용되는 데 최대 10분이 걸립니다. 클러스터 태그 변경(태그 추가, 수정 또는 제거)은 데이터 영역 정책 평가에 전파하는 데 약 5분이 걸립니다. 활성 클러스터에서 태그를 업데이트할 때이 지연을 계획합니다.

  • 클러스터 수준 세분화 - 클러스터 수준에서 Neptune DB 클러스터에 태그를 적용합니다. 클러스터의 모든 인스턴스는 동일한 정책 평가를 공유합니다. TBAC는 하위 그래프 또는 버텍스/엣지 수준 액세스 제어를 제공하지 않습니다.

  • IAM 인증 필요 - TBAC는 클러스터에서 IAM 인증이 활성화된 경우에만 적용됩니다. IAM 인증이 없는 연결은 이러한 정책을 완전히 우회합니다.

  • 태그 불변성 - 태그 지정 작업을 보호합니다. 보안 주체가 자체 태그 또는 리소스 태그를 수정할 수 있는 경우 TBAC 제어를 우회할 수 있습니다. SCPs 또는 권한 경계를 사용하여 iam:TagRole, iam:TagUser, 및 rds:AddTagsToResource를 제한합니다rds:RemoveTagsFromResource.

  • Null 태그 처리 - 보안 주체에 정책이를 통해 참조하는 태그가 없는 경우 변수${aws:PrincipalTag/Key}는 빈 문자열로 확인됩니다. 이 사례를 처리하도록 정책을 설계합니다(위의 "누락 태그" 거부 패턴은 리소스 태그에 대해이 문제를 해결합니다).

  • 여러 조건 키 - 동일한 Condition 블록에 여러 조건 키가 나타나면 AND 로직으로 평가됩니다. StringNotEquals의 경우 지정된 모든 조건이 동시에 true인 경우에만 거부가 트리거됩니다. 단일 태그 불일치를 거부하려면 각 태그 키에 대해 별도의 정책 설명을 사용합니다(위의 패턴 참조).

기존 Neptune 보안 기능과의 관계

TBAC가 기존 Neptune 보안 기능을 보완하는 방법
기존 기능 제어 대상 TBAC가 이를 보완하는 방법
VPC/보안 그룹 포트 8182에 대한 네트워크 수준 액세스 TBAC는 네트워크 제어에 자격 증명 인식 권한 부여를 추가합니다.
IAM 인증(SigV4) 발신자 자격 증명 확인 TBAC는 권한 부여 결정에 인증된 자격 증명의 태그를 사용합니다.
작업 기반 액세스 제어 보안 주체가 수행할 수 있는 작업(read/write/delete/로드) TBAC는 태그 정렬을 기반으로 보안 주체가 대상으로 지정할 수 있는 클러스터를 추가합니다.
neptune-db:QueryLanguage 조건 키 허용되는 쿼리 언어(Gremlin, openCypher, SPARQL) 동일한 정책 설명에서 TBAC와 결합할 수 있습니다.
관리 태그 기반 액세스(rds:* 작업) Neptune 인프라를 관리할 수 있는 사용자 TBAC는 동일한 태그 기반 패턴을 데이터 영역(neptune-db:*) 작업으로 확장합니다.
AWS KMS 암호화 저장 데이터 기밀성 직교 - TBAC는 암호화가 아닌 권한 부여를 제어합니다.