Docs Menu
Docs Home
/ /
MongoDB Atlas Kubernetes Operator
/

키 관리 서비스를 사용하여 데이터 암호화

이 페이지의 내용

  • 전제 조건
  • 절차

중요

서버리스 인스턴스에서는 사용할 수 없는 기능입니다.

현재 서버리스 인스턴스는 이 기능을 지원하지 않습니다. 자세한 내용은 서버리스 인스턴스 제한 사항을 참조하세요.

Atlas는 기본적으로 모든 미사용 클러스터 스토리지와 스냅샷 볼륨을 암호화합니다. 클라우드 제공자의 KMS 를 MongoDB 암호화 storage engine 과 함께 사용하여 또 다른 보안 계층을 추가할 수 있습니다.

Atlas의 미사용 데이터 암호화를 위해 다음 고객 KMS 제공자 중 하나 이상을 사용할 수 있습니다.

참고

키 관리 제공자는 cluster cloud 서비스 제공자와 일치하지 않아도 됩니다.

Atlas에서 KMS 를 사용하는 방법에 대해 자세히 알아보려면 다음을 참조하세요.

Atlas Kubernetes Operator 를 사용하여 KMS 암호화 를 관리 하려면 AtlasProject Custom Resource(사용자 spec.encryptionAtRest 지정 리소스) 에 대한 매개 변수를 지정하고 업데이트 할 수 있습니다. 지원되는 사용자 지정 리소스 중 하나에서 spec 필드 를 변경할 때마다 Atlas Kubernetes Operator 가 해당 Atlas 구성을 생성하거나 업데이트 합니다.

에서 를 Amazon Web Services KMS 사용하여 미사용 데이터 미사용 데이터 암호화 를 구성하려면 Atlas Kubernetes Operator 다음이 필요합니다.

중요

암호화 키를 역할 기반 액세스로 전환하면 해당 프로젝트의 암호화 키에 대해 역할 기반 액세스 구성을 취소하고 자격 증명 기반 액세스로 되돌릴 수 없습니다.

Atlas Kubernetes Operator 에서 Azure Key Vault를 사용하여 미사용 데이터 미사용 데이터 암호화 를 구성하려면 다음이 필요합니다.

에서 를 사용하여 미사용 데이터 미사용 데이터 암호화 를 구성하려면 Google Cloud Platform KMS Atlas Kubernetes Operator다음이 필요합니다.

다음 절차에 따라 고객 managed 키를 사용하여 Atlas 데이터를 암호화합니다.

1

다음 매개변수의 값을 사용하여 시크릿을 생성합니다.

Parameter
설명

CustomerMasterKeyID

마스터 키를 암호화하고 해독하는 데 사용하는 Amazon Web Services 고객 마스터 키를 식별하는 고유한 영숫자 입니다.string MongoDB

RoleId

고객 마스터 키를 Amazon Web Services 관리 수 있는 권한이 Amazon Web Services 있는 IAM 역할 을 식별하는 고유한 Amazon Web Services ARN 입니다. 이 값을 찾으려면 다음을 수행합니다.

  1. Go Roles Amazon Web Services 관리 콘솔의 섹션으로 합니다.

  2. Atlas 액세스 를 위해 편집하거나 생성한 IAM 역할 을 클릭합니다.

Amazon Web ServicesSummary 섹션에 ARN 을 표시합니다.

시크릿을 생성하고 레이블을 지정하려면 Amazon Web Services 자격 증명 을 사용하여 다음 명령을 실행 합니다.

kubectl create secret generic aws-ear-creds \
--from-literal="CustomerMasterKeyID=<customer-master-key>" \
--from-literal="RoleId=<aws-arn>" \
-n mongodb-atlas-system
kubectl label secret aws-ear-creds atlas.mongodb.com/type=credentials -n mongodb-atlas-system
2
  1. spec.encryptionAtRest.awsKms 다음 매개변수를 포함하여 사용자 AtlasProject spec.encryptionAtRest지정 리소스 의 배열에 객체를 추가합니다.

    Parameter
    설명

    spec.encryptionAtRest.awsKms.enabled

    이 프로젝트에서 AWS KMS 를 사용하여 미사용 데이터를 암호화하는지 여부를 나타내는 플래그입니다. AWS KMS 를 사용하여 미사용 데이터 암호화를 활성화하려면 이 매개 변수를 true 로 설정합니다. AWS KMS 를 사용하여 미사용 데이터 암호화를 비활성화하려면 이 매개 변수를 false 로 설정합니다. Amazon Web Services KMS를 사용하여 미사용 데이터 암호화를 비활성화하면 Atlas Kubernetes Operator가 구성 세부 정보를 제거합니다.

    spec.encryptionAtRest.awsKms.region

    고객 마스터 키가 있는 Amazon Web Services 리전 을 나타내는 레이블입니다.

    spec.encryptionAtRest.awsKms.secretRef.name

    Amazon Web Services 자격 증명 이 포함된 시크릿의 이름입니다.

    spec.encryptionAtRest.awsKms.secretRef.namespace

    AWS 자격 증명이 포함된 네임스페이스입니다. 지정하지 않으면 이 매개변수는 기본적으로 AtlasProject 사용자 지정 리소스의 네임스페이스로 사용됩니다.

    시크릿 을 사용해야 AccessKeyID SecretAccessKeyCustomerMasterKeyID RoleId합니다. , , 및 에 대한 값을 포함합니다.

  2. 다음 명령을 실행합니다:

    cat <<EOF | kubectl apply -f -
    apiVersion: atlas.mongodb.com/v1
    kind: AtlasProject
    metadata:
    name: my-project
    spec:
    name: Test Atlas Operator Project
    encryptionAtRest:
    awsKms:
    enabled: true
    region: us-east-1
    secretRef:
    name: aws-ear-creds
    namespace: mongodb-atlas-system
    EOF
3

다음 명령을 실행하여 Atlas Kubernetes Operator 가 프로젝트 에 대한 Amazon Web Services KMS 구성을 감지하는지 확인합니다.

kubectl get atlasprojects my-project -o=jsonpath='{.status.conditions[?(@.type=="EncryptionAtRestReadyType")].status}
true
4

프로젝트의 고객 관리형 키를 사용하여 미사용 데이터 암호화를 활성화한 후에는 클러스터 수준에서 활성화하여 데이터를 암호화해야 합니다.

다음 명령을 실행하여 Custom Resource (사용자 지정 리소스)에 Amazon Web Services 을(를) 추가하면 이 클러스터 의 spec.deploymentSpec.encryptionAtRestProvider 키를 사용하여 미사용 데이터 미사용 데이터 AtlasDeployment 암호화 를 활성화할 수 있습니다.

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasDeployment
metadata:
name: my-cluster
spec:
name: Test Atlas Operator Cluster
DeploymentSpec:
encryptionAtRestProvider: "AWS"
EOF
1

다음 매개변수의 값을 사용하여 시크릿을 생성합니다.

Parameter
설명

KeyIdentifier

Azure Key Vault를 식별하는 고유 키가 있는 웹 주소 입니다.

KeyVaultName

키가 포함된 Key Azure Vault를 식별하는 고유 입니다.string

Secret

spec.encryptionAtRest.azureKeyVault.tenantID 에서 지정한 Azure Key Vault 테넌트와 연결된 비공개 데이터입니다.

SubscriptionID

구독 을 식별하는 Azure 36고유한 -16진수 입니다.string Azure 는 구독의 세부 정보 페이지에 구독 ID 를 표시합니다.

시크릿을 만들고 레이블을 지정하려면 Azure 자격 증명 을 사용하여 다음 명령을 실행 합니다.

kubectl create secret generic azure-ear-creds \
--from-literal="KeyIdentifier=<web-address>" \
--from-literal="KeyVaultName=<key-vault>" \
--from-literal="Secret=<secret>" \
--from-literal="SubscriptionID=<subscription>" \
-n mongodb-atlas-system
kubectl label secret azure-ear-creds atlas.mongodb.com/type=credentials -n mongodb-atlas-system
2
  1. spec.encryptionAtRest.azureKeyVault 다음 매개변수를 포함하여 사용자 AtlasProject spec.encryptionAtRest지정 리소스 의 배열에 객체를 추가합니다.

    Parameter
    설명

    spec.encryptionAtRest.azureKeyVault.azureEnvironment

    Azure 계정 자격 증명이 있는 Azure 배포 위치입니다. 유효한 값은 AZURE, AZURE_CHINAAZURE_GERMANY 입니다.

    spec.encryptionAtRest.azureKeyVault.clientID

    Azure 애플리케이션을 식별하는 고유한 36자리 16진수 문자열입니다.

    spec.encryptionAtRest.azureKeyVault. enabled

    이 프로젝트 가 Azure Key Vault를 사용하여 미사용 미사용 데이터 를 암호화하는지 여부를 나타내는 플래그입니다. Azure Key Vault를 사용하여 미사용 데이터 미사용 데이터 암호화 를 활성화 하려면 이 매개 변수를 true 로 설정하다 합니다. Azure Key Vault를 사용하여 미사용 미사용 데이터 암호화 를 비활성화하려면 이 매개 변수를 false 로 설정하다 합니다. Azure Key Vault를 사용하여 미사용 데이터 미사용 데이터 암호화 를 비활성화하면 Atlas Kubernetes Operator 가 구성 세부 정보를 제거합니다.

    spec.encryptionAtRest.azureKeyVault.resourceGroupName

    Azure Key Vault가 포함된 Azure 리소스 그룹을 식별하는 레이블입니다. Azure 는 리소스 그룹의 세부 정보 페이지에 리소스 그룹 이름을 표시합니다.

    spec.encryptionAtRest.azureKeyVault.secretRef.name

    Azure 자격 증명 이 포함된 시크릿의 이름입니다.

    spec.encryptionAtRest.azureKeyVault.secretRef.namespace

    Azure 자격 증명이 포함된 네임스페이스입니다. 지정하지 않으면 이 매개변수는 기본적으로 AtlasProject 사용자 지정 리소스의 네임스페이스로 사용됩니다.

    spec.encryptionAtRest.azureKeyVault. tenantID

    Azure 구독 내에서 Azure Active Directory 테넌트를 식별하는 고유한 36자리 16진수 문자열입니다. Azure 는 테넌트 속성 페이지에 테넌트 ID를 표시합니다.

    시크릿 을 사용해야 KeyVaultName KeyIdentifierSecret SubscriptionID합니다. , , 및 에 대한 값을 포함합니다.

  2. 다음 명령을 실행합니다:

    cat <<EOF | kubectl apply -f -
    apiVersion: atlas.mongodb.com/v1
    kind: AtlasProject
    metadata:
    name: my-project
    spec:
    name: Test Atlas Operator Project
    encryptionAtRest:
    azureKeyVault:
    azureEnvironment: AZURE
    clientID: "12345678-90ab-cdef-1234-567890abcdef"
    enabled: true
    resourceGroupName: "myResourceGroup"
    tenantID: "e8e4b6ba-ff32-4c88-a9af-EXAMPLEID"
    secretRef:
    name: azure-ear-creds
    namespace: mongodb-atlas-system
    EOF
3

다음 명령을 실행하여 Atlas Kubernetes Operator 가 프로젝트 에 대한 Azure Key Vault 구성을 감지하는지 확인합니다.

kubectl get atlasprojects my-project -o=jsonpath='{.status.conditions[?(@.type=="EncryptionAtRestReadyType")].status}
true
4

프로젝트의 고객 관리형 키를 사용하여 미사용 데이터 암호화를 활성화한 후에는 클러스터 수준에서 활성화하여 데이터를 암호화해야 합니다.

다음 명령을 실행하여 spec.deploymentSpec.encryptionAtRestProvider 을(를) AtlasDeployment Custom Resource(사용자 지정 리소스)에 추가하면 이 클러스터 에 대해 Azure 키를 사용하여 미사용 데이터 미사용 데이터 암호화 를 활성화할 수 있습니다.

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasDeployment
metadata:
name: my-cluster
spec:
name: Test Atlas Operator Cluster
DeploymentSpec:
encryptionAtRestProvider: "AZURE"
EOF
1

다음 매개변수의 값을 사용하여 시크릿을 생성합니다.

Parameter
설명

KeyVersionResourceID

KMS 키 버전 리소스 를 표시하는 고유한 리소스 경로입니다.ID Google Cloud Platform

ServiceAccountKey

JSON Google Cloud Platform KMS 계정의 자격 증명 Google Cloud Platform 이 포함된 파일 입니다.

중요: JSON 객체 의 형식을 올바르게 지정해야 합니다. 파일 내에서 자격 증명 필드를 올바르게 들여쓰는지 확인합니다.

다음 예시 는 ServiceAccountKey JSON 파일 의 내용을 보여줍니다.

{
"type": "service_account",
"project_id": "my-project-common-0",
"private_key_id": "e120598ea4f88249469fcdd75a9a785c1bb3\",
"private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEuwIBA(truncated)SfecnS0mT94D9\\n-----END PRIVATE KEY-----\\n\",
"client_email": "my-email-kms-0@my-project-common-0.iam.gserviceaccount.com\",
"client_id": "10180967717292066",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/my-email-kms-0%40my-project-common-0.iam.gserviceaccount.com"
"universe_domain": "googleapis.com"
}

시크릿을 만들고 레이블을 지정하려면 Google Cloud Platform 자격 증명 을 사용하여 다음 명령어를 실행 합니다.

kubectl create secret generic azure-ear-creds \
--from-literal="KeyVersionResourceID=<resource-id>" \
--from-file="ServiceAccountKey=<your-service-account-key-files.json>" \
-n mongodb-atlas-system
kubectl label secret gcp-ear-creds atlas.mongodb.com/type=credentials -n mongodb-atlas-system
2
  1. spec.encryptionAtRest.googleCloudKms 다음 매개변수를 포함하여 사용자 AtlasProject spec.encryptionAtRest지정 리소스 의 배열에 객체를 추가합니다.

    Parameter
    설명

    spec.encryptionAtRest.googleCloudKms.enabled

    이 프로젝트가 GCP KMS 를 사용하여 미사용 데이터를 암호화하는지 여부를 나타내는 플래그입니다. GCP KMS 를 사용하여 미사용 데이터 암호화를 사용하려면 이 매개 변수를 true 로 설정합니다. GCP KMS 를 사용하여 미사용 데이터 암호화를 사용하지 않도록 설정하려면 이 매개 변수를 false 로 설정합니다. Google Cloud KMS 를 사용하여 미사용 데이터 암호화를 사용하지 않도록 설정하면 Atlas Kubernetes Operator가 구성 세부 정보를 제거합니다.

    spec.encryptionAtRest.googleCloudKms.secretRef.name

    Google Cloud Platform 자격 증명 이 포함된 시크릿의 이름입니다.

    spec.encryptionAtRest.googleCloudKms.secretRef.namespace

    Google Cloud 자격 증명이 포함된 네임스페이스입니다. 지정하지 않으면 이 매개변수는 기본적으로 AtlasProject 사용자 지정 리소스의 네임스페이스로 사용됩니다.

    시크릿 을 사용해야 KeyVersionResourceID ServiceAccountKey합니다. 및 에 대한 값을 포함합니다.

  2. 다음 명령을 실행합니다:

    cat <<EOF | kubectl apply -f -
    apiVersion: atlas.mongodb.com/v1
    kind: AtlasProject
    metadata:
    name: my-project
    spec:
    name: Test Atlas Operator Project
    encryptionAtRest:
    googleCloudKms:
    enabled: true
    secretRef:
    name: gcp-ear-creds
    namespace: mongodb-atlas-system
    EOF
3

다음 명령어를 실행하여 Atlas Kubernetes Operator 가 프로젝트 에 대한 Google Cloud Platform KMS 구성을 감지하는지 확인합니다.

kubectl get atlasprojects my-project -o=jsonpath='{.status.conditions[?(@.type=="EncryptionAtRestReadyType")].status}
true
4

프로젝트의 고객 관리형 키를 사용하여 미사용 데이터 암호화를 활성화한 후에는 클러스터 수준에서 활성화하여 데이터를 암호화해야 합니다.

다음 명령을 실행하여 spec.deploymentSpec.encryptionAtRestProvider AtlasDeployment Custom Resource(사용자 지정 리소스)에 을(를) 추가하면 Google Cloud Platform 이 클러스터 의 키를 사용하여 미사용 데이터 암호화 를 활성화할 수 있습니다.

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasDeployment
metadata:
name: my-cluster
spec:
name: Test Atlas Operator Cluster
DeploymentSpec:
encryptionAtRestProvider: "GCP"
EOF

돌아가기

X.509

이 페이지의 내용