Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / / / / /

Crie seu aplicativo habilitado para Queryable Encryption

Nesta página

  • Visão geral
  • Antes de começar
  • Procedimento
  • Próximos passos

Este guia mostra como criar um aplicativo que implemente o Queryable Encryption para criptografar e descriptografar automaticamente os campos de documentos.

Depois de concluir as etapas deste guia, você deve ter um aplicativo cliente em funcionamento que esteja pronto para inserir documentos com campos criptografados com sua Chave mestre do cliente.

Certifique-se de ter concluído as seguintes tarefas de pré-requisito antes de criar seu aplicativo:

  1. Instale um driver e dependências compatíveis com a Queryable Encryption

  2. Instalar e configurar uma biblioteca de Queryable Encryption

  3. Criar uma chave mestra do cliente

Dica

Veja: Aplicação Completa

Para ver o código completo desse aplicativo de amostra, selecione a aba correspondente à sua linguagem de programação e siga o link fornecido. Cada repositório de aplicativo de amostra inclui um arquivo README.md que você pode utilizar para saber como configurar seu ambiente e executar o aplicativo.

Aplicação mongosh completa

Selecione a guia do seu provedor de chaves abaixo.

1

Os exemplos de código neste tutorial usam as seguintes variáveis para executar o fluxo de trabalho com Queryable Encryption:

  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Defina seu URI de conexão na variável de ambiente MONGODB_URI ou substitua o valor diretamente.

  • keyVaultDatabaseName - O banco de dados MongoDB onde suas chaves de criptografia de dados (DEKs) serão armazenadas. Defina isso como "encryption".

  • keyVaultCollectionName - A coleção no MongoDB onde seus DEKs serão armazenados. Defina isso como "__keyVault".

  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs serão armazenados. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.

  • encryptionDatabaseName - O banco de dados MongoDB onde seus dados criptografados serão armazenados. Defina isso como "medicalRecords".

  • encryptionCollectionName - A coleção no MongoDB onde seus dados criptografados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina keyVaultDatabaseName como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina keyVaultCollectionName como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs serão armazenados. Defina keyVaultNamespace para um novo objeto CollectionNamespace cujo nome são os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um ponto.

  • encryptionDatabaseName - O banco de dados MongoDB onde você criptografou
    os dados serão armazenados. Defina encryptedDatabaseName como "medicalRecords".
  • encryptionCollectionName - A coleção no MongoDB onde seu criptografado
    os dados serão armazenados. Defina encryptedCollectionName como "patients".
  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI no arquivo appsettings.json ou substitua o valor diretamente.

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const string kmsProviderName = "<your KMS provider name>";
const string keyVaultDatabaseName = "encryption";
const string keyVaultCollectionName = "__keyVault";
var keyVaultNamespace =
CollectionNamespace.FromFullName($"{keyVaultDatabaseName}.{keyVaultCollectionName}");
const string encryptedDatabaseName = "medicalRecords";
const string encryptedCollectionName = "patients";
var appSettings = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var uri = appSettings["MongoDbUri"];
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs serão armazenados. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.

  • encryptionDatabaseName - O banco de dados MongoDB onde seus dados criptografados serão armazenados. Defina isso como "medicalRecords".

  • encryptionCollectionName - A coleção no MongoDB onde seus dados criptografados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kmsProviderName := "<KMS provider name>"
uri := os.Getenv("MONGODB_URI") // Your connection URI
keyVaultDatabaseName := "encryption"
keyVaultCollectionName := "__keyVault"
keyVaultNamespace := keyVaultDatabaseName + "." + keyVaultCollectionName
encryptedDatabaseName := "medicalRecords"
encryptedCollectionName := "patients"
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs
    será armazenado. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.
  • encryptionDatabaseName - O banco de dados MongoDB onde você criptografou
    os dados serão armazenados. Defina isso como "medicalRecords".
  • encryptionCollectionName - A coleção no MongoDB onde seu criptografado
    os dados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
String kmsProviderName = "<KMS provider name>";
String uri = QueryableEncryptionHelpers.getEnv("MONGODB_URI"); // Your connection URI
String keyVaultDatabaseName = "encryption";
String keyVaultCollectionName = "__keyVault";
String keyVaultNamespace = keyVaultDatabaseName + "." + keyVaultCollectionName;
String encryptedDatabaseName = "medicalRecords";
String encryptedCollectionName = "patients";
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs
    será armazenado. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.
  • encryptionDatabaseName - O banco de dados MongoDB onde você criptografou
    os dados serão armazenados. Defina isso como "medicalRecords".
  • encryptionCollectionName - A coleção no MongoDB onde seu criptografado
    os dados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kms_provider_name - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • key_vault_database_name - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • key_vault_collection_name - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • key_vault_namespace - O namespace no MongoDB onde seus DEKs
    será armazenado. Defina isso para os valores das variáveis key_vault_database_name e key_vault_collection_name , separados por um período.
  • encryption_database_name - O banco de dados MongoDB onde sua criptografia
    os dados serão armazenados. Defina isso como "medicalRecords".
  • encryption_collection_name - A coleção no MongoDB onde seus dados criptografados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

# KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kms_provider_name = "<KMS provider name>"
uri = os.environ['MONGODB_URI'] # Your connection URI
key_vault_database_name = "encryption"
key_vault_collection_name = "__keyVault"
key_vault_namespace = f"{key_vault_database_name}.{key_vault_collection_name}"
encrypted_database_name = "medicalRecords"
encrypted_collection_name = "patients"

Importante

Permissões de namespace da coleção de cofre de chaves

A collection de cofre de chaves está no namespace encryption.__keyVault . Certifique-se de que o trigger de banco de dados que sua aplicação usa para se conectar ao MongoDB tenha permissões de ReadWrite nesse namespace.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

2

Crie uma variável contendo suas credenciais KMS com a seguinte estrutura. Use o ID da chave de acesso e a chave de acesso secreta que você usou na etapa 2.2 quando criou um usuário Amazon Web Services IAM.

kmsProviderCredentials = {
aws: {
accessKeyId: process.env["AWS_ACCESS_KEY_ID"], // Your AWS access key ID
secretAccessKey: process.env["AWS_SECRET_ACCESS_KEY"], // Your AWS secret access key
},
};
var kmsProviderCredentials = new Dictionary<string, IReadOnlyDictionary<string, object>>();
var kmsOptions = new Dictionary<string, object>
{
{ "accessKeyId", _appSettings["Aws:AccessKeyId"] }, // Your AWS access key ID
{ "secretAccessKey", _appSettings["Aws:SecretAccessKey"] } // Your AWS secret access key
};
kmsProviderCredentials.Add("aws", kmsOptions);
kmsProviderCredentials := map[string]map[string]interface{}{
"aws": {
"accessKeyId": os.Getenv("AWS_ACCESS_KEY_ID"), // AWS access key ID
"secretAccessKey": os.Getenv("AWS_SECRET_ACCESS_KEY"), // AWS secret access key
},
}
Map<String, Object> kmsProviderDetails = new HashMap<>();
kmsProviderDetails.put("accessKeyId", getEnv("AWS_ACCESS_KEY_ID")); // Your AWS access key ID
kmsProviderDetails.put("secretAccessKey", getEnv("AWS_SECRET_ACCESS_KEY")); // Your AWS secret access key
Map<String, Map<String, Object>> kmsProviderCredentials = new HashMap<String, Map<String, Object>>();
kmsProviderCredentials.put("aws", kmsProviderDetails);
kmsProviders = {
aws: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID, // Your AWS access key ID
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, // Your AWS secret access key
},
};
kms_provider_credentials = {
"aws": {
"accessKeyId": os.environ['AWS_ACCESS_KEY_ID'], # Your AWS access key ID
"secretAccessKey": os.environ['AWS_SECRET_ACCESS_KEY'] # Your AWS secret access key
}
}

Importante

Lembrete: autenticar com funções IAM em produção

Para utilizar um papelIAM do em vez de um usuário IAM para autenticar seu aplicativo, especifique um objeto vazio para suas credenciais em seu objeto do provedor de KMS. Isto instrui o condutor a recuperar automaticamente as credenciais do ambiente:

kmsProviders = {
aws: { }
};
kmsProviderCredentials.Add("aws", new Dictionary<string, object>);
kmsProviderCredentials := map[string]map[string]interface{}{
"aws": { },
}
kmsProviderCredentials.put("aws", new HashMap<>());
kmsProviders = {
aws: { }
};
kms_provider_credentials = {
"aws": { }
}
3

Crie uma variável contendo suas credenciais da Chave Mestre do Cliente com a seguinte estrutura. Use o ARN e a região que você registrou na etapa 1.3 ao criar uma CMK.

customerMasterKeyCredentials = {
key: process.env["AWS_KEY_ARN"], // Your AWS Key ARN
region: process.env["AWS_KEY_REGION"], // Your AWS Key Region
};
var customerMasterKeyCredentials = new BsonDocument
{
{ "key", _appSettings["Aws:KeyArn"] }, // Your AWS Key ARN
{ "region", _appSettings["Aws:KeyRegion"] } // Your AWS Key Region
};
customerMasterKeyCredentials := map[string]string{
"key": os.Getenv("AWS_KEY_ARN"), // Your AWS Key ARN
"region": os.Getenv("AWS_KEY_REGION"), // Your AWS Key Region
}
BsonDocument customerMasterKeyCredentials = new BsonDocument();
customerMasterKeyCredentials.put("provider", new BsonString(kmsProviderName));
customerMasterKeyCredentials.put("key", new BsonString(getEnv("AWS_KEY_ARN"))); // Your AWS Key ARN
customerMasterKeyCredentials.put("region", new BsonString(getEnv("AWS_KEY_REGION"))); // Your AWS Key Region
customerMasterKeyCredentials = {
key: process.env.AWS_KEY_ARN, // Your AWS Key ARN
region: process.env.AWS_KEY_REGION, // Your AWS Key Region
};
customer_master_key_credentials = {
"key": os.environ['AWS_KEY_ARN'], # Your AWS Key ARN
"region": os.environ['AWS_KEY_REGION'] # Your AWS Key Region
}
4

Observação

Opções de criptografia automática

As opções de criptografia automática fornecem informações de configuração para a Biblioteca compartilhada de criptografia automática, que modifica o comportamento do aplicativo ao acessar campos criptografados.

Para saber mais sobre a Biblioteca compartilhada de criptografia automática, consulte a página Biblioteca compartilhada de criptografia automática .

Crie um objeto autoEncryptionOptions com as seguintes opções:

  • O namespace da sua coleção do Key Vault

  • O objeto kmsProviderCredentials , que contém suas credenciais do Amazon Web Services KMS

const autoEncryptionOptions = {
keyVaultNamespace: keyVaultNamespace,
kmsProviders: kmsProviderCredentials,
};

Crie um objeto AutoEncryptionOptions com as seguintes opções:

  • O namespace da sua coleção do Key Vault

  • O objeto kmsProviderCredentials , que contém suas credenciais do Amazon Web Services KMS

  • O objeto extraOptions, que contém o caminho para sua Biblioteca Compartilhada de Criptografia Automática

var extraOptions = new Dictionary<string, object>
{
{ "cryptSharedLibPath", _appSettings["CryptSharedLibPath"] } // Path to your Automatic Encryption Shared Library
};
var autoEncryptionOptions = new AutoEncryptionOptions(
keyVaultNamespace,
kmsProviderCredentials,
extraOptions: extraOptions);

Crie um objeto AutoEncryption com as seguintes opções:

  • O namespace da sua coleção do Key Vault

  • O objeto kmsProviderCredentials , que contém suas credenciais do Amazon Web Services KMS

  • O objeto cryptSharedLibraryPath, que contém o caminho para sua Biblioteca Compartilhada de Criptografia Automática

cryptSharedLibraryPath := map[string]interface{}{
"cryptSharedLibPath": os.Getenv("SHARED_LIB_PATH"), // Path to your Automatic Encryption Shared Library
}
autoEncryptionOptions := options.AutoEncryption().
SetKeyVaultNamespace(keyVaultNamespace).
SetKmsProviders(kmsProviderCredentials).
SetExtraOptions(cryptSharedLibraryPath)

Crie um objeto AutoEncryptionSettings com as seguintes opções:

  • O namespace da sua coleção do Key Vault

  • O objeto kmsProviderCredentials , que contém suas credenciais do Amazon Web Services KMS

  • O objeto extraOptions, que contém o caminho para sua Biblioteca Compartilhada de Criptografia Automática

Map<String, Object> extraOptions = new HashMap<String, Object>();
extraOptions.put("cryptSharedLibPath", getEnv("SHARED_LIB_PATH")); // Path to your Automatic Encryption Shared Library
AutoEncryptionSettings autoEncryptionSettings = AutoEncryptionSettings.builder()
.keyVaultNamespace(keyVaultNamespace)
.kmsProviders(kmsProviderCredentials)
.extraOptions(extraOptions)
.build();

Crie um objeto autoEncryptionOptions com as seguintes opções:

  • O namespace da sua coleção do Key Vault

  • O objeto kmsProviders , que contém suas credenciais do Amazon Web Services KMS

  • O objeto sharedLibraryPathOptions, que contém o caminho para sua Biblioteca Compartilhada de Criptografia Automática

const extraOptions = {
cryptSharedLibPath: process.env.SHARED_LIB_PATH, // Path to your Automatic Encryption Shared Library
};
const autoEncryptionOptions = {
keyVaultNamespace,
kmsProviders,
extraOptions,
};

Crie um objeto AutoEncryptionOpts com as seguintes opções:

  • O objeto kms_provider_credentials , que contém suas credenciais do Amazon Web Services KMS

  • O namespace da sua coleção do Key Vault

  • O caminho para sua biblioteca compartilhada de criptografia automática

auto_encryption_options = AutoEncryptionOpts(
kms_provider_credentials,
key_vault_namespace,
crypt_shared_lib_path=os.environ['SHARED_LIB_PATH'] # Path to your Automatic Encryption Shared Library>
)
5

Para criar um cliente utilizado para criptografar e descriptografar dados em sua coleção, instancie um novo MongoClient usando seu URI de conexão e suas opções de criptografia automática.

const encryptedClient = Mongo(uri, autoEncryptionOpts);
var clientSettings = MongoClientSettings.FromConnectionString(uri);
clientSettings.AutoEncryptionOptions = qeHelpers.GetAutoEncryptionOptions(
keyVaultNamespace,
kmsProviderCredentials);
var encryptedClient = new MongoClient(clientSettings);
encryptedClient, err := mongo.Connect(
context.TODO(),
options.Client().ApplyURI(uri).SetAutoEncryptionOptions(autoEncryptionOptions),
)
if err != nil {
panic(fmt.Sprintf("Unable to connect to MongoDB: %v\n", err))
}
defer func() {
_ = encryptedClient.Disconnect(context.TODO())
}()
MongoClientSettings clientSettings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString(uri))
.autoEncryptionSettings(autoEncryptionSettings)
.build();
try (MongoClient encryptedClient = MongoClients.create(clientSettings)) {
const encryptedClient = new MongoClient(uri, {
autoEncryption: autoEncryptionOptions,
});
encrypted_client = MongoClient(
uri, auto_encryption_opts=auto_encryption_options)
1

Os exemplos de código neste tutorial usam as seguintes variáveis para executar o fluxo de trabalho com Queryable Encryption:

  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Defina seu URI de conexão na variável de ambiente MONGODB_URI ou substitua o valor diretamente.

  • keyVaultDatabaseName - O banco de dados MongoDB onde suas chaves de criptografia de dados (DEKs) serão armazenadas. Defina isso como "encryption".

  • keyVaultCollectionName - A coleção no MongoDB onde seus DEKs serão armazenados. Defina isso como "__keyVault".

  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs serão armazenados. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.

  • encryptionDatabaseName - O banco de dados MongoDB onde seus dados criptografados serão armazenados. Defina isso como "medicalRecords".

  • encryptionCollectionName - A coleção no MongoDB onde seus dados criptografados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina keyVaultDatabaseName como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina keyVaultCollectionName como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs serão armazenados. Defina keyVaultNamespace para um novo objeto CollectionNamespace cujo nome são os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um ponto.

  • encryptionDatabaseName - O banco de dados MongoDB onde você criptografou
    os dados serão armazenados. Defina encryptedDatabaseName como "medicalRecords".
  • encryptionCollectionName - A coleção no MongoDB onde seu criptografado
    os dados serão armazenados. Defina encryptedCollectionName como "patients".
  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI no arquivo appsettings.json ou substitua o valor diretamente.

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const string kmsProviderName = "<your KMS provider name>";
const string keyVaultDatabaseName = "encryption";
const string keyVaultCollectionName = "__keyVault";
var keyVaultNamespace =
CollectionNamespace.FromFullName($"{keyVaultDatabaseName}.{keyVaultCollectionName}");
const string encryptedDatabaseName = "medicalRecords";
const string encryptedCollectionName = "patients";
var appSettings = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var uri = appSettings["MongoDbUri"];
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs serão armazenados. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.

  • encryptionDatabaseName - O banco de dados MongoDB onde seus dados criptografados serão armazenados. Defina isso como "medicalRecords".

  • encryptionCollectionName - A coleção no MongoDB onde seus dados criptografados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kmsProviderName := "<KMS provider name>"
uri := os.Getenv("MONGODB_URI") // Your connection URI
keyVaultDatabaseName := "encryption"
keyVaultCollectionName := "__keyVault"
keyVaultNamespace := keyVaultDatabaseName + "." + keyVaultCollectionName
encryptedDatabaseName := "medicalRecords"
encryptedCollectionName := "patients"
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs
    será armazenado. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.
  • encryptionDatabaseName - O banco de dados MongoDB onde você criptografou
    os dados serão armazenados. Defina isso como "medicalRecords".
  • encryptionCollectionName - A coleção no MongoDB onde seu criptografado
    os dados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
String kmsProviderName = "<KMS provider name>";
String uri = QueryableEncryptionHelpers.getEnv("MONGODB_URI"); // Your connection URI
String keyVaultDatabaseName = "encryption";
String keyVaultCollectionName = "__keyVault";
String keyVaultNamespace = keyVaultDatabaseName + "." + keyVaultCollectionName;
String encryptedDatabaseName = "medicalRecords";
String encryptedCollectionName = "patients";
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs
    será armazenado. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.
  • encryptionDatabaseName - O banco de dados MongoDB onde você criptografou
    os dados serão armazenados. Defina isso como "medicalRecords".
  • encryptionCollectionName - A coleção no MongoDB onde seu criptografado
    os dados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kms_provider_name - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • key_vault_database_name - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • key_vault_collection_name - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • key_vault_namespace - O namespace no MongoDB onde seus DEKs
    será armazenado. Defina isso para os valores das variáveis key_vault_database_name e key_vault_collection_name , separados por um período.
  • encryption_database_name - O banco de dados MongoDB onde sua criptografia
    os dados serão armazenados. Defina isso como "medicalRecords".
  • encryption_collection_name - A coleção no MongoDB onde seus dados criptografados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

# KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kms_provider_name = "<KMS provider name>"
uri = os.environ['MONGODB_URI'] # Your connection URI
key_vault_database_name = "encryption"
key_vault_collection_name = "__keyVault"
key_vault_namespace = f"{key_vault_database_name}.{key_vault_collection_name}"
encrypted_database_name = "medicalRecords"
encrypted_collection_name = "patients"

Importante

Permissões de namespace da coleção de cofre de chaves

A collection de cofre de chaves está no namespace encryption.__keyVault . Certifique-se de que o trigger de banco de dados que sua aplicação usa para se conectar ao MongoDB tenha permissões de ReadWrite nesse namespace.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

2

Crie uma variável contendo suas credenciais KMS com a seguinte estrutura. Use as credenciais do Azure Key Vault que você registrou no quando registrou seu aplicativo no Azure.

kmsProviderCredentials = {
azure: {
tenantId: process.env["AZURE_TENANT_ID"], // Your Azure tenant ID
clientId: process.env["AZURE_CLIENT_ID"], // Your Azure client ID
clientSecret: process.env["AZURE_CLIENT_SECRET"], // Your Azure client secret
},
};
var kmsProviderCredentials = new Dictionary<string, IReadOnlyDictionary<string, object>>();
var kmsOptions = new Dictionary<string, object>
{
{ "tenantId", _appSettings["Azure:TenantId"] }, // Your Azure tenant ID
{ "clientId", _appSettings["Azure:ClientId"] }, // Your Azure client ID
{ "clientSecret", _appSettings["Azure:ClientSecret"] } // Your Azure client secret
};
kmsProviderCredentials.Add("azure", kmsOptions);
kmsProviderCredentials := map[string]map[string]interface{}{
"azure": {
"tenantId": os.Getenv("AZURE_TENANT_ID"), // Azure tenant ID
"clientId": os.Getenv("AZURE_CLIENT_ID"), // Azure client ID
"clientSecret": os.Getenv("AZURE_CLIENT_SECRET"), // Azure client secret
},
}
Map<String, Object> kmsProviderDetails = new HashMap<>();
kmsProviderDetails.put("tenantId", getEnv("AZURE_TENANT_ID")); // Your Azure tenant ID
kmsProviderDetails.put("clientId", getEnv("AZURE_CLIENT_ID")); // Your Azure client ID
kmsProviderDetails.put("clientSecret", getEnv("AZURE_CLIENT_SECRET")); // Your Azure client secret
Map<String, Map<String, Object>> kmsProviderCredentials = new HashMap<String, Map<String, Object>>();
kmsProviderCredentials.put("azure", kmsProviderDetails);
kmsProviders = {
azure: {
tenantId: process.env.AZURE_TENANT_ID, // Your Azure tenant ID
clientId: process.env.AZURE_CLIENT_ID, // Your Azure client ID
clientSecret: process.env.AZURE_CLIENT_SECRET, // Your Azure client secret
},
};
kms_provider_credentials = {
"azure": {
"tenantId": os.environ['AZURE_TENANT_ID'], # Your Azure tenant ID
"clientId": os.environ['AZURE_CLIENT_ID'], # Your Azure client ID
"clientSecret": os.environ['AZURE_CLIENT_SECRET'] # Your Azure client secret
}
}
3

Crie uma variável contendo suas credenciais da Chave Mestre do Cliente com a seguinte estrutura. Use os detalhes da CMK que você registrou ao criar uma CMK.

customerMasterKeyCredentials = {
keyVaultEndpoint: process.env["AZURE_KEY_VAULT_ENDPOINT"], // Your Azure Key Vault Endpoint
keyName: process.env["AZURE_KEY_NAME"], // Your Azure Key Name
};
var customerMasterKeyCredentials = new BsonDocument
{
{ "keyVaultEndpoint", _appSettings["Azure:KeyVaultEndpoint"] }, // Your Azure Key Vault Endpoint
{ "keyName", _appSettings["Azure:KeyName"] } // Your Azure Key Name
};
customerMasterKeyCredentials := map[string]string{
"keyVaultEndpoint": os.Getenv("AZURE_KEY_VAULT_ENDPOINT"), // Your Azure Key Vault Endpoint
"keyName": os.Getenv("AZURE_KEY_NAME"), // Your Azure Key Name
}
BsonDocument customerMasterKeyCredentials = new BsonDocument();
customerMasterKeyCredentials.put("provider", new BsonString(kmsProviderName));
customerMasterKeyCredentials.put("keyName", new BsonString(getEnv("AZURE_KEY_NAME"))); // Your Azure Key Vault Endpoint
customerMasterKeyCredentials.put("keyVaultEndpoint", new BsonString(getEnv("AZURE_KEY_VAULT_ENDPOINT"))); // Your Azure Key Name
customerMasterKeyCredentials = {
keyVaultEndpoint: process.env.AZURE_KEY_VAULT_ENDPOINT, // Your Azure Key Vault Endpoint
keyName: process.env.AZURE_KEY_NAME, // Your Azure Key Name
};
customer_master_key_credentials = {
"keyName": os.environ['AZURE_KEY_NAME'], # Your Azure key name
"keyVaultEndpoint": os.environ['AZURE_KEY_VAULT_ENDPOINT'] # Your Azure key vault endpoint
}
4

Para criar um cliente para criptografar e descriptografar dados em coleções criptografadas, instancie um novo MongoClient usando seu URI de conexão e opções de criptografia automática.

const encryptedClient = Mongo(uri, autoEncryptionOpts);
var clientSettings = MongoClientSettings.FromConnectionString(uri);
clientSettings.AutoEncryptionOptions = qeHelpers.GetAutoEncryptionOptions(
keyVaultNamespace,
kmsProviderCredentials);
var encryptedClient = new MongoClient(clientSettings);
encryptedClient, err := mongo.Connect(
context.TODO(),
options.Client().ApplyURI(uri).SetAutoEncryptionOptions(autoEncryptionOptions),
)
if err != nil {
panic(fmt.Sprintf("Unable to connect to MongoDB: %v\n", err))
}
defer func() {
_ = encryptedClient.Disconnect(context.TODO())
}()
MongoClientSettings clientSettings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString(uri))
.autoEncryptionSettings(autoEncryptionSettings)
.build();
try (MongoClient encryptedClient = MongoClients.create(clientSettings)) {
const encryptedClient = new MongoClient(uri, {
autoEncryption: autoEncryptionOptions,
});
encrypted_client = MongoClient(
uri, auto_encryption_opts=auto_encryption_options)
1

Os exemplos de código neste tutorial usam as seguintes variáveis para executar o fluxo de trabalho com Queryable Encryption:

  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Defina seu URI de conexão na variável de ambiente MONGODB_URI ou substitua o valor diretamente.

  • keyVaultDatabaseName - O banco de dados MongoDB onde suas chaves de criptografia de dados (DEKs) serão armazenadas. Defina isso como "encryption".

  • keyVaultCollectionName - A coleção no MongoDB onde seus DEKs serão armazenados. Defina isso como "__keyVault".

  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs serão armazenados. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.

  • encryptionDatabaseName - O banco de dados MongoDB onde seus dados criptografados serão armazenados. Defina isso como "medicalRecords".

  • encryptionCollectionName - A coleção no MongoDB onde seus dados criptografados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina keyVaultDatabaseName como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina keyVaultCollectionName como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs serão armazenados. Defina keyVaultNamespace para um novo objeto CollectionNamespace cujo nome são os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um ponto.

  • encryptionDatabaseName - O banco de dados MongoDB onde você criptografou
    os dados serão armazenados. Defina encryptedDatabaseName como "medicalRecords".
  • encryptionCollectionName - A coleção no MongoDB onde seu criptografado
    os dados serão armazenados. Defina encryptedCollectionName como "patients".
  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI no arquivo appsettings.json ou substitua o valor diretamente.

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const string kmsProviderName = "<your KMS provider name>";
const string keyVaultDatabaseName = "encryption";
const string keyVaultCollectionName = "__keyVault";
var keyVaultNamespace =
CollectionNamespace.FromFullName($"{keyVaultDatabaseName}.{keyVaultCollectionName}");
const string encryptedDatabaseName = "medicalRecords";
const string encryptedCollectionName = "patients";
var appSettings = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var uri = appSettings["MongoDbUri"];
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs serão armazenados. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.

  • encryptionDatabaseName - O banco de dados MongoDB onde seus dados criptografados serão armazenados. Defina isso como "medicalRecords".

  • encryptionCollectionName - A coleção no MongoDB onde seus dados criptografados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kmsProviderName := "<KMS provider name>"
uri := os.Getenv("MONGODB_URI") // Your connection URI
keyVaultDatabaseName := "encryption"
keyVaultCollectionName := "__keyVault"
keyVaultNamespace := keyVaultDatabaseName + "." + keyVaultCollectionName
encryptedDatabaseName := "medicalRecords"
encryptedCollectionName := "patients"
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs
    será armazenado. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.
  • encryptionDatabaseName - O banco de dados MongoDB onde você criptografou
    os dados serão armazenados. Defina isso como "medicalRecords".
  • encryptionCollectionName - A coleção no MongoDB onde seu criptografado
    os dados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
String kmsProviderName = "<KMS provider name>";
String uri = QueryableEncryptionHelpers.getEnv("MONGODB_URI"); // Your connection URI
String keyVaultDatabaseName = "encryption";
String keyVaultCollectionName = "__keyVault";
String keyVaultNamespace = keyVaultDatabaseName + "." + keyVaultCollectionName;
String encryptedDatabaseName = "medicalRecords";
String encryptedCollectionName = "patients";
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs
    será armazenado. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.
  • encryptionDatabaseName - O banco de dados MongoDB onde você criptografou
    os dados serão armazenados. Defina isso como "medicalRecords".
  • encryptionCollectionName - A coleção no MongoDB onde seu criptografado
    os dados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kms_provider_name - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • key_vault_database_name - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • key_vault_collection_name - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • key_vault_namespace - O namespace no MongoDB onde seus DEKs
    será armazenado. Defina isso para os valores das variáveis key_vault_database_name e key_vault_collection_name , separados por um período.
  • encryption_database_name - O banco de dados MongoDB onde sua criptografia
    os dados serão armazenados. Defina isso como "medicalRecords".
  • encryption_collection_name - A coleção no MongoDB onde seus dados criptografados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

# KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kms_provider_name = "<KMS provider name>"
uri = os.environ['MONGODB_URI'] # Your connection URI
key_vault_database_name = "encryption"
key_vault_collection_name = "__keyVault"
key_vault_namespace = f"{key_vault_database_name}.{key_vault_collection_name}"
encrypted_database_name = "medicalRecords"
encrypted_collection_name = "patients"

Importante

Permissões de namespace da coleção de cofre de chaves

A collection de cofre de chaves está no namespace encryption.__keyVault . Certifique-se de que o trigger de banco de dados que sua aplicação usa para se conectar ao MongoDB tenha permissões de ReadWrite nesse namespace.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

2

Crie uma variável contendo suas credenciais KMS com a seguinte estrutura.

kmsProviderCredentials = {
gcp: {
email: process.env["GCP_EMAIL"], // Your GCP email
privateKey: process.env["GCP_PRIVATE_KEY"], // Your GCP private key
},
};
var kmsProviderCredentials = new Dictionary<string, IReadOnlyDictionary<string, object>>();
var kmsOptions = new Dictionary<string, object>
{
{ "email", _appSettings["Gcp:Email"] }, // Your GCP email
{ "privateKey", _appSettings["Gcp:PrivateKey"] } // Your GCP private key
};
kmsProviderCredentials.Add("gcp", kmsOptions);
kmsProviderCredentials := map[string]map[string]interface{}{
"gcp": {
"email": os.Getenv("GCP_EMAIL"), // GCP email
"privateKey": os.Getenv("GCP_PRIVATE_KEY"), // GCP private key
},
}
Map<String, Object> kmsProviderDetails = new HashMap<>();
kmsProviderDetails.put("email", getEnv("GCP_EMAIL")); // Your GCP email
kmsProviderDetails.put("privateKey", getEnv("GCP_PRIVATE_KEY")); // Your GCP private key
Map<String, Map<String, Object>> kmsProviderCredentials = new HashMap<String, Map<String, Object>>();
kmsProviderCredentials.put("gcp", kmsProviderDetails);
kmsProviders = {
gcp: {
email: process.env.GCP_EMAIL, // Your GCP email
privateKey: process.env.GCP_PRIVATE_KEY, // Your GCP private key
},
};
kms_provider_credentials = {
"gcp": {
"email": os.environ['GCP_EMAIL'], # Your GCP email
"privateKey": os.environ['GCP_PRIVATE_KEY'] # Your GCP private key
}
}
3

Crie uma variável contendo suas credenciais da Chave Mestre do Cliente com a seguinte estrutura. Use as credenciais que você registrou ao criar uma CMK.

customerMasterKeyCredentials = {
projectId: process.env["GCP_PROJECT_ID"], // Your GCP Project ID
location: process.env["GCP_LOCATION"], // Your GCP Key Location
keyRing: process.env["GCP_KEY_RING"], // Your GCP Key Ring
keyName: process.env["GCP_KEY_NAME"], // Your GCP Key Name
};
var customerMasterKeyCredentials = new BsonDocument
{
{ "projectId", _appSettings["Gcp:ProjectId"] }, // Your GCP Project ID
{ "location", _appSettings["Gcp:Location"] }, // Your GCP Key Location
{ "keyRing", _appSettings["Gcp:KeyRing"] }, // Your GCP Key Ring
{ "keyName", _appSettings["Gcp:KeyName"] } // Your GCP Key Name
};
customerMasterKeyCredentials := map[string]string{
"projectId": os.Getenv("GCP_PROJECT_ID"), // Your GCP Project ID
"location": os.Getenv("GCP_LOCATION"), // Your GCP Key Location
"keyRing": os.Getenv("GCP_KEY_RING"), // Your GCP Key Ring
"keyName": os.Getenv("GCP_KEY_NAME"), // Your GCP Key Name
}
BsonDocument customerMasterKeyCredentials = new BsonDocument();
customerMasterKeyCredentials.put("provider", new BsonString(kmsProviderName));
customerMasterKeyCredentials.put("projectId", new BsonString(getEnv("GCP_PROJECT_ID"))); // Your GCP Project ID
customerMasterKeyCredentials.put("location", new BsonString(getEnv("GCP_LOCATION"))); // Your GCP Key Location
customerMasterKeyCredentials.put("keyRing", new BsonString(getEnv("GCP_KEY_RING"))); // Your GCP Key Ring
customerMasterKeyCredentials.put("keyName", new BsonString(getEnv("GCP_KEY_NAME"))); // Your GCP Key Name
customerMasterKeyCredentials = {
projectId: process.env.GCP_PROJECT_ID, // Your GCP Project ID
location: process.env.GCP_LOCATION, // Your GCP Key Location
keyRing: process.env.GCP_KEY_RING, // Your GCP Key Ring
keyName: process.env.GCP_KEY_NAME, // Your GCP Key Name
};
customer_master_key_credentials = {
"projectId": os.environ['GCP_PROJECT_ID'], # Your GCP email
"location": os.environ['GCP_LOCATION'], # Your GCP private key
"keyRing": os.environ['GCP_KEY_RING'], # Your GCP private key
"keyName": os.environ['GCP_KEY_NAME'] # Your GCP private key
}
4

Para criar um cliente para criptografar e descriptografar dados em coleções criptografadas, instancie um novo MongoClient usando seu URI de conexão e opções de criptografia automática.

const encryptedClient = Mongo(uri, autoEncryptionOpts);
var clientSettings = MongoClientSettings.FromConnectionString(uri);
clientSettings.AutoEncryptionOptions = qeHelpers.GetAutoEncryptionOptions(
keyVaultNamespace,
kmsProviderCredentials);
var encryptedClient = new MongoClient(clientSettings);
encryptedClient, err := mongo.Connect(
context.TODO(),
options.Client().ApplyURI(uri).SetAutoEncryptionOptions(autoEncryptionOptions),
)
if err != nil {
panic(fmt.Sprintf("Unable to connect to MongoDB: %v\n", err))
}
defer func() {
_ = encryptedClient.Disconnect(context.TODO())
}()
MongoClientSettings clientSettings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString(uri))
.autoEncryptionSettings(autoEncryptionSettings)
.build();
try (MongoClient encryptedClient = MongoClients.create(clientSettings)) {
const encryptedClient = new MongoClient(uri, {
autoEncryption: autoEncryptionOptions,
});
encrypted_client = MongoClient(
uri, auto_encryption_opts=auto_encryption_options)
1

Os exemplos de código neste tutorial usam as seguintes variáveis para executar o fluxo de trabalho com Queryable Encryption:

  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Defina seu URI de conexão na variável de ambiente MONGODB_URI ou substitua o valor diretamente.

  • keyVaultDatabaseName - O banco de dados MongoDB onde suas chaves de criptografia de dados (DEKs) serão armazenadas. Defina isso como "encryption".

  • keyVaultCollectionName - A coleção no MongoDB onde seus DEKs serão armazenados. Defina isso como "__keyVault".

  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs serão armazenados. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.

  • encryptionDatabaseName - O banco de dados MongoDB onde seus dados criptografados serão armazenados. Defina isso como "medicalRecords".

  • encryptionCollectionName - A coleção no MongoDB onde seus dados criptografados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina keyVaultDatabaseName como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina keyVaultCollectionName como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs serão armazenados. Defina keyVaultNamespace para um novo objeto CollectionNamespace cujo nome são os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um ponto.

  • encryptionDatabaseName - O banco de dados MongoDB onde você criptografou
    os dados serão armazenados. Defina encryptedDatabaseName como "medicalRecords".
  • encryptionCollectionName - A coleção no MongoDB onde seu criptografado
    os dados serão armazenados. Defina encryptedCollectionName como "patients".
  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI no arquivo appsettings.json ou substitua o valor diretamente.

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const string kmsProviderName = "<your KMS provider name>";
const string keyVaultDatabaseName = "encryption";
const string keyVaultCollectionName = "__keyVault";
var keyVaultNamespace =
CollectionNamespace.FromFullName($"{keyVaultDatabaseName}.{keyVaultCollectionName}");
const string encryptedDatabaseName = "medicalRecords";
const string encryptedCollectionName = "patients";
var appSettings = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var uri = appSettings["MongoDbUri"];
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs serão armazenados. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.

  • encryptionDatabaseName - O banco de dados MongoDB onde seus dados criptografados serão armazenados. Defina isso como "medicalRecords".

  • encryptionCollectionName - A coleção no MongoDB onde seus dados criptografados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kmsProviderName := "<KMS provider name>"
uri := os.Getenv("MONGODB_URI") // Your connection URI
keyVaultDatabaseName := "encryption"
keyVaultCollectionName := "__keyVault"
keyVaultNamespace := keyVaultDatabaseName + "." + keyVaultCollectionName
encryptedDatabaseName := "medicalRecords"
encryptedCollectionName := "patients"
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs
    será armazenado. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.
  • encryptionDatabaseName - O banco de dados MongoDB onde você criptografou
    os dados serão armazenados. Defina isso como "medicalRecords".
  • encryptionCollectionName - A coleção no MongoDB onde seu criptografado
    os dados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
String kmsProviderName = "<KMS provider name>";
String uri = QueryableEncryptionHelpers.getEnv("MONGODB_URI"); // Your connection URI
String keyVaultDatabaseName = "encryption";
String keyVaultCollectionName = "__keyVault";
String keyVaultNamespace = keyVaultDatabaseName + "." + keyVaultCollectionName;
String encryptedDatabaseName = "medicalRecords";
String encryptedCollectionName = "patients";
  • kmsProviderName - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • keyVaultDatabaseName - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • keyVaultCollectionName - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • keyVaultNamespace - O namespace no MongoDB onde seus DEKs
    será armazenado. Defina isso para os valores das variáveis keyVaultDatabaseName e keyVaultCollectionName , separados por um período.
  • encryptionDatabaseName - O banco de dados MongoDB onde você criptografou
    os dados serão armazenados. Defina isso como "medicalRecords".
  • encryptionCollectionName - A coleção no MongoDB onde seu criptografado
    os dados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

// KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
const kmsProviderName = "<Your KMS Provider Name>";
const uri = process.env.MONGODB_URI; // Your connection URI
const keyVaultDatabaseName = "encryption";
const keyVaultCollectionName = "__keyVault";
const keyVaultNamespace = `${keyVaultDatabaseName}.${keyVaultCollectionName}`;
const encryptedDatabaseName = "medicalRecords";
const encryptedCollectionName = "patients";
  • kms_provider_name - O KMS que você usa para armazenar sua Chave Mestre do Cliente. Defina isso como seu provedor de chaves: "aws", "azure", "gcp" ou "kmip".

  • uri - URI de conexão do sistema do MongoDB. Definir sua conexão
    URI na variável de ambiente MONGODB_URI ou substitua o valor diretamente.
  • key_vault_database_name - O banco de dados MongoDB onde seus dados
    as chaves de criptografia (DEKs) serão armazenadas. Defina isso como "encryption".
  • key_vault_collection_name - A collection no MongoDB onde seus DEKs
    será armazenado. Defina isso como "__keyVault".
  • key_vault_namespace - O namespace no MongoDB onde seus DEKs
    será armazenado. Defina isso para os valores das variáveis key_vault_database_name e key_vault_collection_name , separados por um período.
  • encryption_database_name - O banco de dados MongoDB onde sua criptografia
    os dados serão armazenados. Defina isso como "medicalRecords".
  • encryption_collection_name - A coleção no MongoDB onde seus dados criptografados serão armazenados. Defina isso como "patients".

Você pode declarar essas variáveis usando o seguinte código:

# KMS provider name should be one of the following: "aws", "gcp", "azure", "kmip" or "local"
kms_provider_name = "<KMS provider name>"
uri = os.environ['MONGODB_URI'] # Your connection URI
key_vault_database_name = "encryption"
key_vault_collection_name = "__keyVault"
key_vault_namespace = f"{key_vault_database_name}.{key_vault_collection_name}"
encrypted_database_name = "medicalRecords"
encrypted_collection_name = "patients"

Importante

Permissões de namespace da coleção de cofre de chaves

A collection de cofre de chaves está no namespace encryption.__keyVault . Certifique-se de que o trigger de banco de dados que sua aplicação usa para se conectar ao MongoDB tenha permissões de ReadWrite nesse namespace.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

Dica

Variáveis de ambiente

O código de exemplo neste tutorial faz referência a variáveis de ambiente que você precisa definir. Como alternativa, você pode substituir os valores diretamente no código.

Para saber como configurar essas variáveis de ambiente, consulte o README.md incluído no aplicativo de amostra no GitHub.

2

Crie uma variável contendo o endpoint do seu provedor de chaves compatível com KMIP com a seguinte estrutura:

kmsProviderCredentials = {
kmip: {
endpoint: process.env["KMIP_KMS_ENDPOINT"], // Your KMIP KMS endpoint
},
};
var kmsProviderCredentials = new Dictionary<string, IReadOnlyDictionary<string, object>>();
var kmsOptions = new Dictionary<string, object>
{
{ "endpoint", _appSettings["Kmip:KmsEndpoint"] } // Your KMIP KMS endpoint
};
kmsProviderCredentials.Add("kmip", kmsOptions);
kmsProviderCredentials := map[string]map[string]interface{}{
"kmip": {
"endpoint": os.Getenv("KMIP_KMS_ENDPOINT"), // KMIP KMS endpoint
},
}
Map<String, Object> kmsProviderDetails = new HashMap<>();
kmsProviderDetails.put("endpoint", getEnv("KMIP_KMS_ENDPOINT")); // Your KMIP KMS endpoint
Map<String, Map<String, Object>> kmsProviderCredentials = new HashMap<String, Map<String, Object>>();
kmsProviderCredentials.put("kmip", kmsProviderDetails);
kmsProviders = {
kmip: {
endpoint: process.env.KMIP_KMS_ENDPOINT, // Your KMIP KMS endpoint
},
};
kms_provider_credentials = {
"kmip": {
"endpoint": os.environ['KMIP_KMS_ENDPOINT'] # Your KMIP KMS endpoint
}
}
3

Crie um objeto vazio, conforme mostrado no exemplo de código a seguir. Isso solicita que seu fornecedor de chaves compatível com KMIPgere uma nova chave mestre do cliente.

customerMasterKeyCredentials = {};
var customerMasterKeyCredentials = new BsonDocument();
cmkCredentials := map[string]string{}
BsonDocument customerMasterKeyCredentials = new BsonDocument();
customerMasterKeyCredentials = {};
customer_master_key_credentials = {}
4

Para criar um cliente para criptografar e descriptografar dados em coleções criptografadas, instancie um novo MongoClient usando seu URI de conexão e opções de criptografia automática.

const encryptedClient = Mongo(uri, autoEncryptionOpts);
var clientSettings = MongoClientSettings.FromConnectionString(uri);
clientSettings.AutoEncryptionOptions = qeHelpers.GetAutoEncryptionOptions(
keyVaultNamespace,
kmsProviderCredentials);
var encryptedClient = new MongoClient(clientSettings);
encryptedClient, err := mongo.Connect(
context.TODO(),
options.Client().ApplyURI(uri).SetAutoEncryptionOptions(autoEncryptionOptions),
)
if err != nil {
panic(fmt.Sprintf("Unable to connect to MongoDB: %v\n", err))
}
defer func() {
_ = encryptedClient.Disconnect(context.TODO())
}()
MongoClientSettings clientSettings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString(uri))
.autoEncryptionSettings(autoEncryptionSettings)
.build();
try (MongoClient encryptedClient = MongoClients.create(clientSettings)) {
const encryptedClient = new MongoClient(uri, {
autoEncryption: autoEncryptionOptions,
});
encrypted_client = MongoClient(
uri, auto_encryption_opts=auto_encryption_options)

Depois de instalar um driver e dependências, criar uma chave mestra do cliente e criar seu aplicativo, consulte Visão geral: usar a Queryable Encryption para criptografar e consultar dados.

Voltar

Criar uma chave mestra do cliente