[Oracle Cloud] Object Storage에 SSE-C로 암호화하여 안전하게 업로드

3800 단어 oraclecloudoci

소개



Oracle Cloud Infrastructure(OCI)의 Object Storage는 데이터 암호화에 SSE-C(Server-Side Encryption with Customer-provided keys)를 사용할 수 있습니다. 이는 Object Storage에 데이터를 업로드할 때 AES 키를 함께 전달하여 Object Storage 측에서 해당 AES 키를 사용하여 데이터를 암호화합니다. 그러면 AES 키가 삭제됩니다. 반대로 데이터를 검색할 때 업로드할 때 지정한 AES 키를 지정하지 않으면 다운로드할 수 없습니다. 즉, AES 키를 가지고 있는 사람이 아니면 데이터 다운로드를 할 수 없게 되어, 보다 안전한 오브젝트 관리를 할 수 있습니다.

이 기사에서는 SSE-C 방법을 소개합니다.

OCI Vault



SSE-C를 수행하려면 AES 256비트 키가 필요합니다. 독자적으로 AES 키를 만들어도 좋지만 키 관리가 번거롭기 때문에 OCI Vault를 사용하는 것이 편합니다. OCI Vault를 사용하는 것이 걱정되는 분은 여기을 참조하십시오.
OCI CLI에서 OCI Vault에서 AES 256bit(32byte) 데이터 암호화 키를 생성합니다.
oci kms crypto generate-data-encryption-key \
--key-id ocid1.key.oc1.ap-tokyo-1.brp274vvaabe6.abxhiljre3ayxcxxr66zjuoyyjh2ld76dvkf7ogl4dgk6cd4okgbkvv5fi7q \
--include-plaintext-key true \
--endpoint https://brp274vvaabe6-crypto.kms.ap-tokyo-1.oraclecloud.com \
--key-shape '
{
  "algorithm": "AES",
  "length": 32
}
'

실행 예
{
  "data": {
    "ciphertext": "QXLDJKpVs+vFAOfo9TSbYJUGbnZfvl9g4Vmax+Tof84DFXMm6AgIzXEKRAUa2r5aPB0UFL3U8HdN9EARr0bmJu/JC/0k1AAAAAA=",
    "plaintext": "RzUrIJZAHY22sbmhVDMLPgPcPv76pFnAi9G2a6bFXIs=",
    "plaintext-checksum": "3654972344"
  }
}

데이터 암호화 키(평문)를 파일화합니다. OCI CLI에서 실행하기 위해 파일화하지만, 본래는 그다지 추천할 수 있는 것은 아닙니다. 보다 안전하게 만들기 위해 SDK를 사용하여 메모리에서 데이터 암호화 키 (평문)를 처리하는 것이 좋습니다.
echo -n "RzUrIJZAHY22sbmhVDMLPgPcPv76pFnAi9G2a6bFXIs=" > /home/opc/work/data-encrypt-key.txt

Object Storage에서 SSE-C



sse-c-bucket이라는 Bucket으로 확인합니다.



업로드할 파일을 확인합니다.
[opc@vault01 work]$ cat /home/opc/work/rawtext.txt
Hello, OCI Vault! I am test file!

SSE-C를 사용하여 업로드
  • bucket-name : Bucket 이름
  • file : 업로드 대상 파일
  • encryption-key-file : AES 256bit 키 지정 (데이터 암호화 키 (평문) 지정)
  • oci os object put \
    --bucket-name sse-c-bucket \
    --file /home/opc/work/rawtext.txt \
    --encryption-key-file /home/opc/work/data-encrypt-key.txt
    

    Object Storage를 보면 파일이 저장됩니다. 다운로드를 누르면 ...



    오류가 발생합니다. SSE-C를 사용하고 있으므로 다운로드할 때도 데이터 암호화 키를 지정하지 않으면 안됩니다.



    OCI CLI에서도 정상적으로 얻으십시오.
    oci os object get \
    --bucket-name sse-c-bucket \
    --name rawtext.txt \
    --file /home/opc/work/get.txt
    

    역시 오류가
    {
        "code": null,
        "message": "The service returned error code 400",
        "opc-request-id": "nrt-1:AF2eZIzFJVmYJXztITl1P6a6M7bsk-peq0_Bdc_azNbovpdeG1-Sj4jHfzhBTTZV",
        "status": 400
    }
    

    데이터 암호화 키를 전달하여 다운로드를 시도합니다.
    oci os object get \
    --bucket-name sse-c-bucket \
    --name rawtext.txt \
    --file /home/opc/work/get.txt \
    --encryption-key-file /home/opc/work/data-encrypt-key.txt
    

    성공적으로 다운로드할 수 있었습니다.
    [opc@vault01 work]$ cat /home/opc/work/get.txt
    Hello, OCI Vault! I am test file!
    

    참고 URL

    좋은 웹페이지 즐겨찾기