Docs Menu
Docs Home
/ /
MongoDB Atlas Kubernetes 演算子
/

KMSを使用したデータの暗号化

項目一覧

  • 前提条件
  • 手順

重要

サーバーレスインスタンスで使用できない機能

サーバーレスインスタンスは現時点ではこの機能をサポートしていません。 詳しくは、「 サーバーレス インスタンスの制限 」を参照してください。

Atlas は、デフォルトで保管中のすべてのクラスター ストレージとスナップショット ボリュームを暗号化します。 クラウドプロバイダーの KMSと MongoDB暗号化ストレージ エンジン を併用することで、セキュリティをさらに強化できます。

Atlas での保管時の暗号化には、次のカスタマーKMSプロバイダーの 1 つ以上を使用できます。

注意

キー管理プロバイダーは、クラスター クラウド サービス プロバイダーと同じである必要はありません。

Atlas でKMSを使用する方法の詳細については、以下を参照してください。

Atlas Kubernetes Operator を使用して KMS 暗号化を管理するには、 カスタムspec.encryptionAtRest リソースAtlasProject パラメータを指定して更新します。サポートされているカスタム リソースのいずれかでspecフィールドを変更するたびに、Atlas Kubernetes Operator は対応する Atlas 構成を作成または更新します。

Amazon Web ServicesKMSでAtlas Kubernetes Operator を使用して保管時の暗号化を設定するには、次のものが必要です。

重要

暗号化キーをロールベースのアクセスに切り替えた場合、そのプロジェクトでは、ロールベースのアクセス構成を取り消して、暗号化のキーの認証情報ベースのアクセスに戻すことはできません。

Atlas Kubernetes Operator でAzure Key Vault を使用して保管時の暗号化を構成するには、次のものが必要です。

Google Cloud PlatformKMSでAtlas Kubernetes Operator を使用して保管時の暗号化を構成するには、次の手順を実行する必要があります。

次の手順で、カスタマー マネージド キーを使用して Atlas データを暗号化します。

1

次のパラメーターの値で シークレット を作成します。

Parameter
説明
CustomerMasterKeyID
マスター キーを暗号化および復号化するために使用する Amazon Web ServicesカスタマーstringMongoDB マスター キーを識別する一意の英数字 。
RoleId

カスタマー マスターAmazon Web Services Amazon Web Servicesキーを管理する権限を持つAmazon Web Services IAM ロールを識別する一意の ARNこの値を見つけるには、次の手順に従います。

  1. GoRolesAmazon Web Servicesマネジメント コンソールの {0 セクションに します。

  2. Atlas アクセス用に編集または作成したIAMロールをクリックします。

Amazon Web Servicesでは、Summary セクションに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. 次のパラメータを含む AtlasProjectカスタムspec.encryptionAtRest.awsKms spec.encryptionAtRestリソース の 配列に オブジェクトを追加します。

    Parameter
    説明
    spec.encryptionAtRest.awsKms.enabled
    このプロジェクトがAmazon Web Services KMSを使用して保管中のデータを暗号化するかどうかを示すフラグ。 Amazon Web Services KMSを使用して保管時の暗号化を有効にするには、このパラメータを true に設定します。 Amazon Web Services KMSを使用して保管時の暗号化を無効にするには、このパラメータを false に設定します。 Amazon Web Services KMSを使用して保管時の暗号化を無効にすると、 Atlas Kubernetes Operatorは構成の詳細を削除します。
    spec.encryptionAtRest.awsKms.region
    CMK が存在するAmazon Web Servicesリージョンを示すラベル。
    spec.encryptionAtRest.awsKms.secretRef.name
    Amazon Web Servicesの認証情報を含むシークレットの名前。
    spec.encryptionAtRest.awsKms.secretRef.namespace
    Amazon Web Servicesの認証情報を含む名前空間。 指定されていない場合、このパラメータはデフォルトでAtlasProjectカスタム リソースの名前空間になります。

    シークレット を使用する必要がありますAccessKeyID これには、 、SecretAccessKeyCustomerMasterKeyIDRoleId の値が含まれます。

  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

プロジェクトでカスタマー マネージド キーを使用して保管時の暗号化を有効にした後、データを暗号化するには、クラスター レベルで有効にする必要があります。

次のコマンドを実行して、 spec.deploymentSpec.encryptionAtRestProviderAtlasDeployment カスタム リソースに追加します。これにより、このクラスターのAmazon Web Servicesキーを使用した保管時の暗号化が有効になります。

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
stringキーを含むAzure Key Vault を識別する一意の 。
Secret
spec.encryptionAtRest.azureKeyVault.tenantIDで指定したAzure Key Vault テナントに関連付けられたプライベート データ。
SubscriptionID
サブスクリプションを識別する一意の Azure36桁の 16 進数文字 。stringAzureでは、サブスクリプションの詳細ページにサブスクリプション 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. 次のパラメータを含む AtlasProjectカスタムspec.encryptionAtRest.azureKeyVault spec.encryptionAtRestリソース の 配列に オブジェクトを追加します。

    Parameter
    説明
    spec.encryptionAtRest.azureKeyVault.azureEnvironment
    Azure アカウント認証情報が存在する Azure 配置のロケーション。有効な値はAZUREAZURE_CHINAAZURE_GERMANYです。
    spec.encryptionAtRest.azureKeyVault.clientID
    アプリケーションを識別する一意の Azure36 桁の 16 進数文字 。string
    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
    Unique 36-hexadecimal character string that identifies the Azure Active Directory tenant within your Azure subscription. Azureは、テナント プロパティ ページにテナント ID を表示します。

    シークレット を使用する必要がありますKeyVaultName これには、 、KeyIdentifierSecretSubscriptionID の値が含まれます。

  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.encryptionAtRestProviderAtlasDeploymentカスタム リソースに追加します。これにより、このクラスターの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
のキー バージョン リソース を表示する一意のリソースID Google Cloud PlatformKMSパス。
ServiceAccountKey

JSONGoogle Cloud PlatformKMSアカウントの 認証情報を含む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. 次のパラメータを含む AtlasProjectカスタムspec.encryptionAtRest.googleCloudKms spec.encryptionAtRestリソース の 配列に オブジェクトを追加します。

    Parameter
    説明
    spec.encryptionAtRest.googleCloudKms.enabled
    このプロジェクトがGoogle Cloud Platform KMSを使用して保管中のデータを暗号化するかどうかを示すフラグ。 Google Cloud Platform KMSを使用して保管時の暗号化を有効にするには、このパラメータを true に設定します。 Google Cloud Platform KMSを使用して保管時の暗号化を無効にするには、このパラメータを false に設定します。 Google Cloud Platform KMSを使用して保管時の暗号化を無効にすると、 Atlas Kubernetes Operatorによって構成の詳細が削除されます。
    spec.encryptionAtRest.googleCloudKms.secretRef.name
    Google Cloud Platformの認証情報を含むシークレットの名前。
    spec.encryptionAtRest.googleCloudKms.secretRef.namespace
    Google Cloud Platformの認証情報を含む名前空間。 指定されていない場合、このパラメータはデフォルトでAtlasProjectカスタム リソースの名前空間になります。

    シークレット を使用する必要があります これにはKeyVersionResourceIDServiceAccountKey の値が含まれます。

  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.encryptionAtRestProviderAtlasDeployment カスタム リソースに追加します。これにより、このクラスターの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

項目一覧