개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.19 16:30

MongoDBDriverClientEncryption::createDataKey에 대한 질문

목록
  • 알고리즘장인 20시간 전 2025.07.19 16:30 새글
  • 7
    1
저는 MongoDBDriverClientEncryption::createDataKey 메소드를 사용하여 데이터 키를 생성하고자 하는데, 이 메소드의 사용법에 대해 궁금합니다.

createDataKey 메소드의 첫 번째 인자로 사용할 KeyVaultSecret를 지정하는 방법을 알려주세요. KeyVaultSecret를 직접 생성하는 방법도 알려주시면 감사하겠습니다.

또한, createDataKey 메소드의 두 번째 인자로 사용할 키 크기를 지정하는 방법을 알려주세요. 예를 들어, 256비트 키를 생성하고자 할 때 어떻게 해야 할까요?

createDataKey 메소드의 반환값은 무엇인지 알려주세요. 데이터 키를 생성하고 반환해주는지, 또는 다른 값을 반환해주는지 궁금합니다.

    댓글목록

    profile_image
    나우호스팅  20시간 전



    MongoDBDriverClientEncryption::createDataKey 메소드는 KeyVaultSecret를 지정하여 데이터 키를 생성합니다.

    KeyVaultSecret를 직접 생성하는 방법은 MongoDB Atlas의 Key Vault를 사용하는 것입니다.

    1. MongoDB Atlas로 로그인합니다.
    2. Key Vault 탭으로 이동합니다.
    3. 새 Secret를 생성합니다.
    4. Secret 이름과 값(예: AES-256-CBC)을 입력합니다.
    5. Secret를 생성합니다.

    createDataKey 메소드의 두 번째 인자로 사용할 키 크기를 지정하는 방법은 키 크기를 지정하는 옵션을 사용하는 것입니다.

    예를 들어, 256비트 키를 생성하고자 할 때는 키 크기를 32로 지정하면 됩니다.

    createDataKey 메소드의 반환값은 데이터 키를 생성하고 반환하는 것입니다.

    반환값은 KeyVaultSecret의 ID와 데이터 키를 포함하는 DataKey 객체입니다.

    #hostingforum.kr
    java
    
    // KeyVaultSecret를 직접 생성하는 예제
    
    MongoClientSettings settings = MongoClientSettings.builder()
    
            .applyConnectionString(ConnectionString.builder()
    
                    .addHost("mongodb+srv://username:password@cluster-name.mongodb.net/")
    
                    .build())
    
            .build();
    
    
    
    MongoClient mongoClient = MongoClients.create(settings);
    
    
    
    // KeyVaultSecret를 생성하는 코드
    
    MongoCredential credential = MongoCredential.createApiKeyCredential("username", "cluster-name.mongodb.net", "api-key");
    
    
    
    MongoClientSettings keyVaultSettings = MongoClientSettings.builder()
    
            .applyConnectionString(ConnectionString.builder()
    
                    .addHost("mongodb+srv://username:password@cluster-name.mongodb.net/")
    
                    .build())
    
            .credential(credential)
    
            .build();
    
    
    
    MongoClient keyVaultClient = MongoClients.create(keyVaultSettings);
    
    
    
    MongoCollection keyVaultCollection = keyVaultClient.getDatabase("admin").getCollection("keyvault.keys");
    
    
    
    Document secret = new Document("key", "AES-256-CBC")
    
            .append("keyId", "secret-id")
    
            .append("keyAltNames", Arrays.asList("secret-alt-name"));
    
    
    
    keyVaultCollection.insertOne(secret);
    
    
    
    // createDataKey 메소드의 사용 예제
    
    MongoClientSettings encryptionSettings = MongoClientSettings.builder()
    
            .applyConnectionString(ConnectionString.builder()
    
                    .addHost("mongodb+srv://username:password@cluster-name.mongodb.net/")
    
                    .build())
    
            .build();
    
    
    
    MongoClient mongoClient = MongoClients.create(encryptionSettings);
    
    
    
    MongoClientSettings encryptionSettingsWithClientEncryption = MongoClientSettings.builder(encryptionSettings)
    
            .addEncryptionOptions(ClientEncryptionSettings.builder()
    
                    .keyVaultClient(mongoClient)
    
                    .keyVaultNamespace("admin.keyvault.keys")
    
                    .build())
    
            .build();
    
    
    
    MongoClient mongoClientWithEncryption = MongoClients.create(encryptionSettingsWithClientEncryption);
    
    
    
    ClientEncryption clientEncryption = mongoClientWithEncryption.getDatabase("admin").getCollection("encryption").withCodecRegistry(CodecRegistries.fromProviders(Arrays.asList(new ClientEncryptionCodecProvider()))).getClientEncryption();
    
    
    
    DataKey dataKey = clientEncryption.createDataKey("secret-id", 32);
    
    
    
    System.out.println(dataKey.getKeyId());
    
    System.out.println(dataKey.getKeyMaterial());
    
    

    2025-07-19 16:31

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,438건 / 6 페이지

검색

게시물 검색