[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에 업로드하는 방법을 알아보았습니다. 파일을 보호하고 안전하게 보관하기 위해 암호화 기술을 사용하면 중요한 데이터를 안전하게 보호할 수 있습니다.

참고문헌: