[php] PHP 라이브러리 S3 파일 암호화하여 업로드
클라우드 스토리지 서비스 Amazon S3를 사용하여 파일을 업로드할 때 중요한 파일을 안전하게 보호하기 위해 파일을 암호화할 수 있습니다. 이를 통해 데이터를 안전하게 저장하고 민감한 정보를 노출시키지 않을 수 있습니다.
1. PHP 라이브러리 설치
먼저 AWS SDK for PHP 라이브러리를 사용하여 S3에 파일을 업로드합니다. PHP에서는 aws/aws-sdk-php
패키지를 사용하여 해당 라이브러리를 설치할 수 있습니다:
composer require aws/aws-sdk-php
2. 파일 암호화
PHP에서 OpenSSL 라이브러리를 사용하여 파일을 암호화할 수 있습니다. 다음 코드는 파일을 암호화하는 간단한 예제입니다:
$plaintext = '내용을 암호화하기';
$key = '비밀키'; // 16, 24 또는 32바이트의 키 사용
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$ciphertext = openssl_encrypt($plaintext, 'aes-256-cbc', $key, 0, $iv);
file_put_contents('encrypted.txt', $ciphertext);
3. S3에 암호화된 파일 업로드
이제 암호화된 파일을 S3 버킷에 업로드할 수 있습니다. AWS SDK for PHP를 사용하여 다음 예제 코드와 같이 파일을 업로드할 수 있습니다:
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\Crypto\KmsMaterialsProvider;
use Aws\Crypto\CryptoClient;
$key = 'your-key';
$secret = 'your-secret';
$bucket = 'your-bucket';
$region = 'your-region';
$s3 = new S3Client([
'version' => 'latest',
'region' => $region,
'credentials' => [
'key' => $key,
'secret' => $secret,
],
]);
$plaintext = '내용을 암호화하기';
$key = '비밀키'; // 16, 24 또는 32바이트의 키 사용
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$ciphertext = openssl_encrypt($plaintext, 'aes-256-cbc', $key, 0, $iv);
try {
$result = $s3->putObject([
'Bucket' => $bucket,
'Key' => 'encrypted.txt',
'Body' => $ciphertext,
]);
echo "파일이 성공적으로 업로드되었습니다.";
} catch (Aws\S3\Exception\S3Exception $e) {
echo "파일을 업로드하는 중에 오류가 발생했습니다: " . $e->getMessage();
}
요약
이제 PHP를 사용하여 암호화된 파일을 Amazon S3에 업로드하는 방법을 알아보았습니다. 파일을 보호하고 안전하게 보관하기 위해 암호화 기술을 사용하면 중요한 데이터를 안전하게 보호할 수 있습니다.
참고문헌: