오브젝트 스토리지에서 임포트하는 동안 데이터 해독

오브젝트 스토리지에 저장된 암호화된 파일에서 데이터를 해독하고 로드할 수 있습니다. 외부 테이블에서 사용하는 오브젝트 스토리지에서 암호화된 데이터를 해독할 수도 있습니다.

이 옵션은 소스 파일의 데이터가 암호화된 경우 온프레미스 데이터베이스에서 자율운영 AI 데이터베이스로 마이그레이션할 때 유용합니다.

주: 이 옵션은 4GB 미만의 오브젝트 스토리지 파일에 대해서만 지원됩니다.

이 옵션은 다음 절차에 적용됩니다.

DBMS_CRYPTO 알고리즘을 사용하여 데이터 해독 및 로드

객체 스토리지에서 암호화된 파일을 해독하고 자율운영 AI 데이터베이스의 테이블로 데이터를 로드하는 단계를 보여줍니다(암호 해독 단계에서는 DBMS_CRYPTO 알고리즘 사용).

사전 요구사항으로 파일을 암호화하고 오브젝트 스토리지에 업로드해야 합니다. 이 예에서는 CSV 파일을 사용하며 파일이 DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5 알고리즘을 사용하여 암호화되고 Cloud Object Storage에 업로드된다고 가정합니다.

ENCRYPT 함수에 대한 자세한 내용은 ENCRYPT 함수를 참조하십시오.

암호화 키 생성에 대한 자세한 내용은 DBMS_CRYPTO Operational Notes를 참조하십시오.

오브젝트 스토리지에서 자율운영 AI 데이터베이스의 기존 테이블로 데이터를 해독하고 로드하려면 다음을 수행합니다.

  1. 자율운영 AI 데이터베이스 인스턴스에 접속합니다.

  2. DBMS_CLOUD.CREATE_CREDENTIAL를 사용하여 클라우드 오브젝트 스토리지 인증서를 저장합니다.

    예:

     BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL(
         credential_name => 'OBJ_STORE_CRED',
         username        => 'user1@example.com',
         password        => 'password'
       );
     END;
     /
    

    usernamepassword에 대해 제공하는 값은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다.

    자세한 내용은 CREATE_CREDENTIAL Procedure를 참조하십시오.

  3. DBMS_CLOUD.CREATE_CREDENTIAL를 사용하여 키를 저장할 인증서를 생성합니다. 예:

     BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL (
         credential_name => 'ENC_CRED_NAME',
         username        => '*Any_username*',
         password        => 'password'
       );
     END;
     /
    

    또는 자격 증명을 생성하여 Vault에 키를 저장할 수 있습니다. 예:

     BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL (
         credential_name  => 'ENC_CRED_NAME',
         params           => JSON_OBJECT ('username' value '*Any_username*',
                                          'region'    value '*Region*',
                                          'secret_id' value '*Secret_id_value*'));
     END;
     /
    

    주: 키를 저장하는 인증서에 지정하는 username 매개변수는 임의의 문자열일 수 있습니다.

    그러면 저장소 암호 인증서인 ENC_CRED_NAME 인증서가 생성됩니다. 여기서 암호(해독/암호화 키)는 Oracle Cloud Infrastructure Vault에 암호로 저장됩니다.

    자세한 내용은 CREATE_CREDENTIAL Procedure를 참조하십시오.

  4. DBMS_CLOUD.COPY_DATA를 실행하고 DBMS_CRYPTO 암호화 알고리즘을 해독 방법으로 지정합니다.

     BEGIN
      DBMS_CLOUD.COPY_DATA (
        table_name       => 'CSV_COPY_DATA',
        credential_name  => 'OBJ_STORE_CRED',
        file_uri_list    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namepace-string/b/bucketname/o/encrypted.csv',
        format           => json_object( 'type' value 'csv', 'encryption' value json_object('type' value DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5,'credential_name' value 'ENC_CRED_NAME'))
       );
     END;
     /
    

    그러면 오브젝트 스토리지의 ENCRYPTED.CSV 파일이 해독됩니다. 그런 다음 데이터가 CSV_COPY_DATA 테이블로 로드됩니다. format 매개변수 encryption 옵션 값은 데이터 해독에 사용할 DBMS_CRYPTO 암호화 알고리즘을 지정합니다.

    암호화 알고리즘에 대한 자세한 내용은 DBMS_CRYPTO 알고리즘을 참조하십시오.

    이 예에서 *namespace-string*은 Oracle Cloud Infrastructure 오브젝트 스토리지 네임스페이스이고 bucketname은 버킷 이름입니다. 자세한 내용은 객체 스토리지 네임스페이스 이해를 참조하십시오.

    매개변수에 대한 자세한 내용은 COPY_DATA 프로시저를 참조하십시오.

    사용 가능한 format 매개변수에 대한 자세한 내용은 DBMS_CLOUD.COPY_DATA와 함께 사용할 수 있습니다. DBMS_CLOUD 패키지 형식 옵션을 참조하십시오.

사용자 정의 함수로 데이터 해독 및 로드

오브젝트 스토리지의 파일을 해독하고 사용자 정의 해독 기능을 사용하여 데이터를 테이블로 로드하는 단계를 보여줍니다.

이러한 단계의 사전 요구사항으로 파일을 암호화하고 오브젝트 스토리지에 업로드해야 합니다. 이 예에서는 CSV 파일을 사용하며 파일이 DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5 알고리즘을 사용하여 암호화되고 Cloud Object Storage에 업로드된다고 가정합니다.

ENCRYPT 함수에 대한 자세한 내용은 ENCRYPT 함수를 참조하십시오.

암호화 키 생성에 대한 자세한 내용은 DBMS_CRYPTO Operational Notes를 참조하십시오.

오브젝트 스토리지에서 자율운영 AI 데이터베이스의 기존 테이블로 데이터를 해독하고 로드하려면 다음을 수행합니다.

  1. 자율운영 AI 데이터베이스 인스턴스에 접속합니다.

  2. DBMS_CLOUD.CREATE_CREDENTIAL를 사용하여 클라우드 오브젝트 스토리지 인증서를 저장합니다.

    예:

     BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL(
         credential_name => 'OBJ_STORE_CRED',
         username        => 'user1@example.com',
         password        => 'password'
       );
     END;
     /
    

    usernamepassword에 대해 제공하는 값은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다.

    자세한 내용은 CREATE_CREDENTIAL Procedure를 참조하십시오.

  3. 사용자 정의 함수 해독 콜백 함수를 생성합니다.

    예:

     CREATE OR REPLACE FUNCTION decryption_func(data IN BLOB)
     RETURN BLOB
     IS
       l_decrypted_data BLOB;
     BEGIN
       DBMS_LOB.createtemporary(l_decrypted_data, TRUE, DBMS_LOB.CALL);
       DBMS_CRYPTO.decrypt(
           dst => l_decrypted_data,
           src => data,
           typ => DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5,
           key => 'encryption key'
         );
       RETURN l_decrypted_data;
     END decryption_callback;
     /
    

    그러면 DECRYPTION_FUNC 해독 함수가 생성됩니다. 이 함수는 사용자가 제공한 키가 있는 스트림 또는 블록 암호화를 사용하여 데이터를 해독합니다. 예제에서 사용자가 제공한 키는 Oracle Cloud Infrastructure Vault에 저장되며 Oracle Cloud Infrastructure Vault 서비스에 대한 REST 호출을 통해 동적으로 검색됩니다.

  4. DBMS_CLOUD.COPY_DATA를 실행하고 format 옵션 encryption를 지정하고 데이터 암호 해독을 위해 생성한 사용자 정의 함수를 지정합니다.

     BEGIN
      DBMS_CLOUD.COPY_DATA (
         table_name      => 'CSV_COPY_DATA',
         credential_name => 'OBJ_STORE_CRED',
         file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namepace-string/b/bucketname/o/encrypted.csv',
         format          => json_object(
                              'type' value 'csv',
                              'encryption' value json_object('user_defined_function' value 'admin.decryption_func'))
       );
     end;
     /
    

    그러면 오브젝트 스토리지의 ENCRYPTED.CSV 파일이 해독됩니다. 그런 다음 데이터가 CSV_COPY_DATA 테이블로 로드됩니다. format 매개변수 encryption 옵션 값은 데이터 암호 해독에 사용할 사용자 정의 함수 이름을 지정합니다.

    주: 사용자 정의 함수에 대한 EXECUTE 권한이 있어야 합니다.

    이 예에서 namespace-string은 Oracle Cloud Infrastructure 오브젝트 스토리지 네임스페이스이고 bucketname은 버킷 이름입니다. 자세한 내용은 객체 스토리지 네임스페이스 이해를 참조하십시오.

    매개변수에 대한 자세한 내용은 COPY_DATA 프로시저를 참조하십시오.

    사용 가능한 format 매개변수에 대한 자세한 내용은 DBMS_CLOUD.COPY_DATA와 함께 사용할 수 있습니다. DBMS_CLOUD 패키지 형식 옵션을 참조하십시오.