Skip to main content
How to enable StorageGRID in your environment
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

StorageGRID에서 S3 암호화 옵션 테스트 및 시연

기여자

_ 아론 클라인 _

StorageGRID와 S3 API를 사용하면 유휴 데이터를 다양한 방법으로 암호화할 수 있습니다. 자세한 내용은 을 참조하십시오 "StorageGRID 암호화 방법을 검토합니다".

이 가이드에서는 S3 API 암호화 방법을 보여 줍니다.

서버 측 암호화(SSE)

SSE를 사용하면 클라이언트가 개체를 저장하고 StorageGRID에서 관리하는 고유 키로 암호화할 수 있습니다. 개체가 요청되면 StorageGRID 에 저장된 키에 의해 개체가 해독됩니다.

SSE 예

  • SSE가 있는 개체를 넣습니다

    aws s3api put-object --bucket <bucket>  --key <file> --body "<file>" --server-side-encryption AES256 --endpoint-url https://s3.example.com
  • 객체를 확인하여 암호화를 확인합니다

    aws s3api head-object --bucket <bucket>  --key <file>   --endpoint-url https://s3.example.com
    {
        "AcceptRanges": "bytes",
        "LastModified": "2022-05-02T19:03:03+00:00",
        "ContentLength": 47,
        "ETag": "\"82e8bfb872e778a4687a26e6c0b36bc1\"",
        "ContentType": "text/plain",
        "ServerSideEncryption": "AES256",
        "Metadata": {}
    }
  • 객체를 가져옵니다

    aws s3api get-object --bucket <bucket>  --key <file> <file> --endpoint-url https://s3.example.com

고객 제공 키(SSE-C)를 사용한 서버측 암호화

SSE를 사용하면 클라이언트가 객체를 저장하고 해당 객체와 함께 제공된 고유 키를 사용하여 해당 객체를 암호화할 수 있습니다. 개체가 요청될 때 개체를 해독하고 반환하려면 동일한 키를 제공해야 합니다.

SSE-C의 예

  • 테스트 또는 데모용으로 암호화 키를 만들 수 있습니다

    • 암호화 키를 만듭니다

      openssl enc -aes-128-cbc -pass pass:secret -P`
      salt=E9DBB6603C7B3D2A
      key=23832BAC16516152E560F933F261BF03
      iv =71E87C0F6EC3C45921C2754BA131A315
  • 생성된 키가 있는 개체를 넣습니다

    aws s3api put-object --bucket <bucket> --key <file> --body "file" --sse-customer-algorithm AES256 --sse-customer-key 23832BAC16516152E560F933F261BF03 --endpoint-url https://s3.example.com
  • 물체를 향하십시오

    aws s3api head-object --bucket <bucket> --key <file> --sse-customer-algorithm AES256 --sse-customer-key 23832BAC16516152E560F933F261BF03 --endpoint-url https://s3.example.com
                {
                    "AcceptRanges": "bytes",
                    "LastModified": "2022-05-02T19:20:02+00:00",
                    "ContentLength": 47,
                    "ETag": "\"f92ef20ab87e0e13951d9bee862e9f9a\"",
                    "ContentType": "binary/octet-stream",
                    "Metadata": {},
                    "SSECustomerAlgorithm": "AES256",
                    "SSECustomerKeyMD5": "rjGuMdjLpPV1eRuotNaPMQ=="
                }
참고 암호화 키를 제공하지 않으면 "HeadObject 작업을 호출할 때 오류 발생(404): 찾을 수 없음" 오류가 발생합니다.
  • 객체를 가져옵니다

    aws s3api get-object --bucket <bucket> --key <file> <file> --sse-customer-algorithm AES256 --sse-customer-key 23832BAC16516152E560F933F261BF03 --endpoint-url https://s3.example.com
참고 암호화 키를 제공하지 않으면 "GetObject 작업을 호출할 때 오류가 발생했습니다(InvalidRequest). 즉, 개체가 서버측 암호화 형식을 사용하여 저장되었습니다."라는 오류가 발생합니다. 객체를 검색하려면 올바른 매개 변수를 제공해야 합니다."

버킷 서버 측 암호화(SSE-S3)

SSE-S3를 사용하면 클라이언트가 버킷에 저장된 모든 오브젝트에 대해 기본 암호화 동작을 정의할 수 있습니다. 개체는 StorageGRID 에서 관리하는 고유 키로 암호화됩니다. 개체가 요청되면 StorageGRID 에 저장된 키에 의해 개체가 해독됩니다.

버킷 SSE-S3의 예

  • 새 버킷을 생성하고 기본 암호화 정책을 설정합니다

    • 새 버킷을 생성합니다

      aws s3api create-bucket --bucket <bucket> --region us-east-1 --endpoint-url https://s3.example.com
    • 버킷 암호화

      aws s3api put-bucket-encryption --bucket <bucket> --server-side-encryption-configuration '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}' --endpoint-url https://s3.example.com
  • 물체를 버킷에 넣으십시오

    aws s3api put-object --bucket <bucket> --key <file> --body "file" --endpoint-url https://s3.example.com
  • 물체를 향하십시오

    aws s3api head-object --bucket <bucket> --key <file> --endpoint-url https://s3.example.com
    {
    "AcceptRanges": "bytes",
    "LastModified": "2022-05-02T20:16:23+00:00",
    "ContentLength": 47,
    "ETag": "\"82e8bfb872e778a4687a26e6c0b36bc1\"",
    "ContentType": "binary/octet-stream",
    "ServerSideEncryption": "AES256",
    "Metadata": {}
    }
  • 객체를 가져옵니다

    aws s3api get-object --bucket <bucket>  --key <file> <file> --endpoint-url https://s3.example.com