Atlas encrypts all cluster storage and snapshot volumes at rest by default. You can add another layer of security by using your cloud provider's KMS together with the MongoDB encrypted storage engine.
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が配置された実行中の Kubernetes クラスター。
The
Project OwnerorOrganization Ownerrole in Atlas.AWS KMS の有効なキー管理認証情報と暗号化のキー。詳細については、 「 AWSでカスタマー マネージド キーを有効にするための前提条件 」を参照してください。
An assumed IAM role for your Atlas account. To set up an assumed IAM role with the Atlas Kubernetes Operator, see Set Up Unified Cloud Provider Integrations. To learn more about role-based access for an AWS encryption key, see Manage Customer Keys with AWS KMS.
重要
暗号化キーをロールベースのアクセスに切り替えた場合、そのプロジェクトでは、ロールベースのアクセス構成を取り消して、暗号化のキーの認証情報ベースのアクセスに戻すことはできません。
Atlas Kubernetes Operator でAzure Key Vault を使用して保管時の暗号化を構成するには、次のものが必要です。
Atlas Kubernetes Operatorが配置された実行中の Kubernetes クラスター。
The
Project OwnerorOrganization Ownerrole in Atlas.Azure Key Vault の有効なキー管理認証情報と暗号化のキー。詳しくは、「 Azureでカスタマー マネージド キーを有効にするための前提条件 」を参照してください。
Google Cloud PlatformKMSでAtlas Kubernetes Operator を使用して保管時の暗号化を構成するには、次の手順を実行する必要があります。
Atlas Kubernetes Operatorが配置された実行中の Kubernetes クラスター。
The
Project OwnerorOrganization Ownerrole in Atlas.Google Cloud Platform KMS の有効なキー管理認証情報と暗号化のキー。詳しくは、「 Google Cloud Platformでカスタマー マネージド キーを有効にするための前提条件 」を参照してください。
手順
次の手順で、カスタマー マネージド キーを使用して Atlas データを暗号化します。
AWS認証情報を使用してシークレットを作成します。
次のパラメーターの値で シークレット を作成します。
Parameter | 説明 |
|---|---|
| マスター キーを暗号化および復号化するために使用する Amazon Web ServicesカスタマーstringMongoDB マスター キーを識別する一意の英数字 。 |
| カスタマー マスターAmazon Web Services Amazon Web Servicesキーを管理する権限を持つAmazon Web Services IAM ロールを識別する一意の ARN 。この値を見つけるには、次の手順に従います。
AWS は、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
spec.encryptionAtRest.awsKmsパラメータを指定します。
spec.encryptionAtRest.awsKmsオブジェクトをspec.encryptionAtRest に追加する
AtlasProjectカスタム リソース内の 配列(次のパラメータを含む)Parameter説明spec.encryptionAtRest.awsKms.enabledこのプロジェクトが AWS KMS を使用して保管中のデータを暗号化しているかどうかを示すフラグ。Amazon Web Services KMS を使用して保管時の暗号化を有効にするには、このパラメーターを
trueに設定します。Amazon Web ServicesKMS を使用して保管時の暗号化を無効にするには、このパラメーターをfalseに設定します。Amazon Web Services KMSで保管時の暗号化を無効にすると、Atlas Kubernetes Operator は構成詳細を削除します。spec.encryptionAtRest.awsKms.regionLabel that indicates the AWS region where the customer master key exists.
spec.encryptionAtRest.awsKms.secretRef.nameAmazon Web Servicesの認証情報を含むシークレットの名前。
spec.encryptionAtRest.awsKms.secretRef.namespaceAmazon Web Servicesの認証情報を含む名前空間。指定しない場合、このパラメータはデフォルトでは
AtlasProjectカスタム リソースの名前空間になります。AccessKeyID、SecretAccessKey、CustomerMasterKeyID、RoleIDの値を含むシークレットを使用する必要があります。次のコマンドを実行します:
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
クラスターのカスタマー マネージド キーを使用して保管時の暗号化を有効にします。
プロジェクトでカスタマー マネージド キーを使用して保管時の暗号化を有効にした後、データを暗号化するには、クラスター レベルで有効にする必要があります。
次のコマンドを実行して、spec.deploymentSpec.encryptionAtRestProvider を AtlasDeployment カスタムリソース に追加します。これにより、このクラスターの AWS キーを使用した保管時の暗号化が有効になります。
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
Azure認証情報を使用してシークレットを作成します。
次のパラメーターの値で シークレット を作成します。
Parameter | 説明 |
|---|---|
| Azure Key Vault を識別する一意のキーを持つウェブ アドレス。 |
| stringキーを含むAzure Key Vault を識別する一意の 。 |
|
|
| サブスクリプションを識別する一意の 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
spec.encryptionAtRest.azureKeyVaultパラメータを指定します。
spec.encryptionAtRest.azureKeyVault を追加するオブジェクトからspec.encryptionAtRest
AtlasProjectカスタム リソース内の 配列(次のパラメータを含む)Parameter説明spec.encryptionAtRest.azureKeyVault.azureEnvironmentAzure アカウントの認証情報が存在する Azure 配置ロケーション。有効な値は
AZURE、AZURE_CHINAとAZURE_GERMANYです。spec.encryptionAtRest.azureKeyVault.clientIDAzure アプリケーションを識別する一意の 36 桁の 16 進数文字列。
spec.encryptionAtRest.azureKeyVault.enabledこのプロジェクトが保管中のデータを暗号化するために Azure キーヴォールト を使用しているかどうかを示するフラグ。保管時の暗号化を有効にするには、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.nameAzure認証情報を含むシークレットの名前。
spec.encryptionAtRest.azureKeyVault.secretRef.namespaceAzure認証情報を含む名前空間。指定しない場合、このパラメータはデフォルトでは
AtlasProjectカスタム リソースの名前空間になります。spec.encryptionAtRest.azureKeyVault.tenantIDAzureサブスクリプション内のAzure 36Active Directory テナントを識別する一意の 桁の 16 進数文字列。Azure は、テナント プロパティ ページにテナントIDを表示します。
KeyVaultName、KeyIdentifier、Secret、SubscriptionIDの値を含むシークレットを使用する必要があります。次のコマンドを実行します:
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
クラスターのカスタマー マネージド キーを使用して保管時の暗号化を有効にします。
プロジェクトでカスタマー マネージド キーを使用して保管時の暗号化を有効にした後、データを暗号化するには、クラスター レベルで有効にする必要があります。
次のコマンドを実行することで、spec.deploymentSpec.encryptionAtRestProvider を AtlasDeployment カスタム リソース に追加し、このクラスターの 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
Google Cloud の認証情報を使用してシークレットを作成します。
次のパラメーターの値で シークレット を作成します。
Parameter | 説明 |
|---|---|
| のキー バージョン リソース を表示する一意のリソースID Google Cloud PlatformKMSパス。 |
| 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
spec.encryptionAtRest.googleCloudKmsパラメータを指定します。
spec.encryptionAtRest.googleCloudKms の追加オブジェクトからspec.encryptionAtRest
AtlasProjectカスタム リソース内の 配列(次のパラメータを含む)Parameter説明spec.encryptionAtRest.googleCloudKms.enabledこのプロジェクトが Google Cloud KMS を使用して保管中のデータを暗号化しているかどうかを示すフラグ。Google Cloud Platform KMS で保管時の暗号化を有効にするには、このパラメータを
trueに設定します。Google Cloud Platform の KMS を使用して保管時の暗号化を無効にするには、このパラメーターをfalseに設定します。Google Cloud Platform KMS を使用して保管時の暗号化を無効にすると、Atlas Kubernetes Operator は構成の詳細を削除します。spec.encryptionAtRest.googleCloudKms.secretRef.nameGoogle Cloud Platformの認証情報を含むシークレットの名前。
spec.encryptionAtRest.googleCloudKms.secretRef.namespaceGoogle Cloud Platformの認証情報を含む名前空間。 指定されていない場合、このパラメータはデフォルトで
AtlasProjectカスタム リソースの名前空間になります。KeyVersionResourceIDとServiceAccountKeyの値を含むシークレットを使用する必要があります。次のコマンドを実行します:
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
クラスターのカスタマー マネージド キーを使用して保管時の暗号化を有効にします。
プロジェクトでカスタマー マネージド キーを使用して保管時の暗号化を有効にした後、データを暗号化するには、クラスター レベルで有効にする必要があります。
次のコマンドを実行して、spec.deploymentSpec.encryptionAtRestProvider を AtlasDeployment カスタム リソース に追加します。これにより、このクラスターの Google Cloud キーを使用した保管時の暗号化が有効になります。
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