메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

PHP용 AWS SDK를 사용하여 서버 측 암호화 지정

이 주제에서는 Amazon S3로 업로드하는 객체에 서버 측 암호화를 추가하기 위해 PHP용 AWS SDK의 클래스를 사용하는 방법을 안내합니다.

참고

이미 PHP용 AWS SDK 사용 및 PHP 예제 실행의 지침에 따라 PHP용 AWS SDK가 올바르게 설치되어 있다고 가정합니다.

Aws\S3\S3Client::putObject() 메서드를 사용하여 객체를 Amazon S3로 업로드할 수 있습니다. 객체를 업로드하는 방법에 대한 실제 예제는 PHP용 AWS SDK를 사용하여 객체 업로드를 참조하십시오.

업로드 요청에 x-amz-server-side-encryption 요청 헤더를 추가(REST API를 사용하여 서버 측 암호화 지정 참조)하려면 다음 PHP 코드 샘플에 나와 있듯이 array 파라미터의 ServerSideEncryption 키를 값 AES256과 함께 지정하십시오.

Copy
use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // $filepath should be absolute path to a file on disk $filepath = '*** Your File Path ***'; // Instantiate the client. $s3 = S3Client::factory(); // Upload a file with server-side encryption. $result = $s3->putObject(array( 'Bucket' => $bucket, 'Key' => $keyname, 'SourceFile' => $filepath, 'ServerSideEncryption' => 'AES256', ));

이에 응답하여 Amazon S3에서 객체 데이터 암호화에 사용된 암호화 알고리즘의 값과 함께 x-amz-server-side-encryption 헤더를 반환합니다.

멀티파트 업로드 API를 사용하여 대형 객체를 업로드할 때 업로드할 객체에 대해 서버 측 암호화를 지정할 수 있습니다.

사용된 암호화 알고리즘 확인

기존 객체의 암호화 상태를 확인하려면 다음 PHP 코드 샘플에 나와 있듯이 Aws\S3\S3Client::headObject() 메서드를 호출하여 객체 메타데이터를 검색하십시오.

Copy
use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // Instantiate the client. $s3 = S3Client::factory(); // Check which server-side encryption algorithm is used. $result = $s3->headObject(array( 'Bucket' => $bucket, 'Key' => $keyname, )); echo $result['ServerSideEncryption'];

기존 객체의 서버 측 암호화 변경(복사 작업)

기존 객체의 암호화 상태를 변경하려면 Aws\S3\S3Client::copyObject() 메서드를 사용하여 객체를 복사하고 원본 객체를 삭제하십시오. array 파라미터의 ServerSideEncryption 키를 값 AES256과 함께 사용하여 대상 객체의 서버 측 암호화를 명시적으로 요청하지 않는 한 기본적으로 copyObject()는 대상을 암호화하지 않습니다. 다음 PHP 코드 샘플에서는 객체를 복사하고 복사된 객체에 서버 측 암호화를 추가합니다.

Copy
use Aws\S3\S3Client; $sourceBucket = '*** Your Source Bucket Name ***'; $sourceKeyname = '*** Your Source Object Key ***'; $targetBucket = '*** Your Target Bucket Name ***'; $targetKeyname = '*** Your Target Object Key ***'; // Instantiate the client. $s3 = S3Client::factory(); // Copy an object and add server-side encryption. $result = $s3->copyObject(array( 'Bucket' => $targetBucket, 'Key' => $targetKeyname, 'CopySource' => "{$sourceBucket}/{$sourceKeyname}", 'ServerSideEncryption' => 'AES256', ));

객체를 복사하는 방법에 대한 실제 예제는 PHP용 AWS SDK를 사용하여 객체 복사를 참조하십시오.

관련 리소스