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が配置された実行中の Kubernetes クラスター。
Atlas の
Project Owner
またはOrganization Owner
ロール。Amazon Web Services KMS の有効なキー管理認証情報と暗号化のキー。詳細については、 「 Amazon Web Servicesでカスタマー マネージド キーを有効にするための前提条件 」を参照してください。
Atlas アカウントの想定されたIAMロール。 Atlas Kubernetes Operator を使用して想定されたIAMロールを設定するには、「統合クラウドプロバイダー統合の設定 」を参照してください。 Amazon Web Services暗号化のキーのロールベースのアクセスの詳細については、「 Amazon Web Services KMSによるカスタマー キーの管理 」を参照してください。
重要
暗号化キーをロールベースのアクセスに切り替えた場合、そのプロジェクトでは、ロールベースのアクセス構成を取り消して、暗号化のキーの認証情報ベースのアクセスに戻すことはできません。
Atlas Kubernetes Operator でAzure Key Vault を使用して保管時の暗号化を構成するには、次のものが必要です。
Atlas Kubernetes Operatorが配置された実行中の Kubernetes クラスター。
Atlas の
Project Owner
またはOrganization Owner
ロール。Azure Key Vault の有効なキー管理認証情報と暗号化のキー。詳しくは、「 Azureでカスタマー マネージド キーを有効にするための前提条件 」を参照してください。
Google Cloud PlatformKMSでAtlas Kubernetes Operator を使用して保管時の暗号化を構成するには、次の手順を実行する必要があります。
Atlas Kubernetes Operatorが配置された実行中の Kubernetes クラスター。
Atlas の
Project Owner
またはOrganization Owner
ロール。Google Cloud Platform KMS の有効なキー管理認証情報と暗号化のキー。詳しくは、「 Google Cloud Platformでカスタマー マネージド キーを有効にするための前提条件 」を参照してください。
手順
次の手順で、カスタマー マネージド キーを使用して Atlas データを暗号化します。
Amazon Web Services の認証情報を使用してシークレットを作成します。
次のパラメーターの値で シークレット を作成します。
Parameter | 説明 |
---|---|
| マスター キーを暗号化および復号化するために使用する Amazon Web ServicesカスタマーstringMongoDB マスター キーを識別する一意の英数字 。 |
| CMK が存在するAmazon Web Servicesリージョンを示すラベル。 |
| カスタマー マスターAmazon Web Services Amazon Web Servicesキーを管理する権限を持つAmazon Web Services IAM ロールを識別する一意の ARN 。この値を見つけるには、次の手順に従います。
Amazon Web Servicesでは、Summary セクションにARNが表示されます。 |
シークレットを作成してラベルを付けるには、 Amazon Web Servicesの認証情報を使用して次のコマンドを実行します。
kubectl create secret generic aws-ear-creds \ --from-literal="customerMasterKeyID=<customer-master-key>" \ --from-literal="region=<aws-region>" \ --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
パラメータを指定します。
次のパラメータを含む
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.secretRef.name
Amazon Web Servicesの認証情報を含むシークレットの名前。
spec.encryptionAtRest.awsKms.secretRef.namespace
Amazon Web Servicesの認証情報を含む名前空間。 指定されていない場合、このパラメータはデフォルトで
AtlasProject
カスタム リソースの名前空間になります。次のパラメータの代わりに、
customerMasterKeyID
、region
、roleId
の値を含むシークレットを使用することを推奨します。spec.encryptionAtRest.awsKms.customerMasterKeyID
spec.encryptionAtRest.awsKms.region
spec.encryptionAtRest.awsKms.roleId
次のコマンドを実行します:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project labels: app.kubernetes.io/version: 1.6.0 spec: name: Test Atlas Operator Project encryptionAtRest: awsKms: enabled: true secretRef: name: aws-ear-creds namespace: mongodb-atlas-system EOF
クラスターのカスタマー マネージド キーを使用して保管時の暗号化を有効にします。
プロジェクトでカスタマー マネージド キーを使用して保管時の暗号化を有効にした後、データを暗号化するには、クラスター レベルで有効にする必要があります。
次のコマンドを実行して、 spec.deploymentSpec.encryptionAtRestProvider
をAtlasDeployment
カスタム リソースに追加します。これにより、このクラスターの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
Azure認証情報を使用してシークレットを作成します。
次のパラメーターの値で シークレット を作成します。
Parameter | 説明 |
---|---|
| Azure アカウント認証情報が存在する Azure 配置のロケーション。有効な値は |
| アプリケーションを識別する一意の Azure36 桁の 16 進数文字 。string |
| Azure Key Vault を識別する一意のキーを持つウェブ アドレス。 |
| stringキーを含むAzure Key Vault を識別する一意の 。 |
| Azure Key Vault を含む Azure リソース グループを識別するラベル。Azureでは、リソース グループの詳細ページにリソース グループ名が表示されます。 |
| サブスクリプションを識別する一意の Azure36桁の 16 進数文字 。stringAzureでは、サブスクリプションの詳細ページにサブスクリプション ID が表示されます。 |
シークレットを作成してラベルを付けるには、 Azure認証情報を使用して次のコマンドを実行します。
kubectl create secret generic azure-ear-creds \ --from-literal="azureEnvironment=<deployment-locationy>" \ --from-literal="clientID=<azure-app>" \ --from-literal="keyIdentifier=<web-address>" \ --from-literal="keyVaultName=<key-vault>" \ --from-literal="resourceGroupName=<resource-group>" \ --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
パラメータを指定します。
次のパラメータを含む
AtlasProject
カスタムspec.encryptionAtRest.azureKeyVault
spec.encryptionAtRest
リソース の 配列に オブジェクトを追加します。Parameter説明spec.encryptionAtRest.azureKeyVault.
enabled
このプロジェクトがAzure Key Vault を使用して保管中のデータを暗号化するかどうかを示すフラグ。 Azure Key Vault を使用して保管時の暗号化を有効にするには、このパラメータを
true
に設定します。 Azure Key Vault を使用して保管時の暗号化を無効にするには、このパラメータをfalse
に設定します。 Azure key vault を使用して保管時の暗号化を無効にすると、Atlas Kubernetes Operator によって構成の詳細が削除されます。spec.encryptionAtRest.azureKeyVault.
secret
spec.encryptionAtRest.azureKeyVault.tenantID
で指定したAzure Key Vault テナントに関連付けられたプライベート データ。spec.encryptionAtRest.azureKeyVault.
tenantID
Unique 36-hexadecimal character string that identifies the Azure Active Directory tenant within your Azure subscription. Azureは、テナント プロパティ ページにテナント ID を表示します。
spec.encryptionAtRest.azureKeyVault.secretRef.name
Azure認証情報を含むシークレットの名前。
spec.encryptionAtRest.azureKeyVault.secretRef.namespace
Azure認証情報を含む名前空間。 指定されていない場合、このパラメータはデフォルトで
AtlasProject
カスタム リソースの名前空間になります。次のパラメータの代わりに、
azureEnvironment
、clientID
、keyIdentifier
、keyVaultName
、resourceGroupName
、subscriptionID
の値を含むシークレットを使用することをお勧めします。spec.encryptionAtRest.azureKeyVault.azureEnvironment
spec.encryptionAtRest.azureKeyVault.clientID
spec.encryptionAtRest.azureKeyVault.keyIdentifier
spec.encryptionAtRest.azureKeyVault.keyVaultName
spec.encryptionAtRest.azureKeyVault.resourceGroupName
spec.encryptionAtRest.azureKeyVault.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: enabled: true secret: "EXAMPLESECRET" 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 Platform の認証情報を使用してシークレットを作成します。
次のパラメーターの値で シークレット を作成します。
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
パラメータを指定します。
次のパラメータを含む
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
カスタム リソースの名前空間になります。次のパラメータの代わりに、
keyVersionResourceID
と の値を含むシークレットを使用することをお勧めします。serviceAccountKey
spec.encryptionAtRest.googleCloudKms.keyVersionResourceID
spec.encryptionAtRest.googleCloudKms.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 Platformキーを使用した保管時の暗号化が有効になります。
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-cluster labels: app.kubernetes.io/version: 1.6.0 spec: name: Test Atlas Operator Cluster DeploymentSpec: encryptionAtRestProvider: "GCP" EOF