미리 서명된 URL을 사용하여 객체 업로드 - Amazon Simple Storage Service

이 안내서는 더 이상 업데이트되지 않습니다. 최신 정보 및 지침은 Amazon S3 사용 설명서를 참조하세요.

미리 서명된 URL을 사용하여 객체 업로드

미리 서명된 URL의 생성자가 해당 객체에 대한 액세스 권한을 보유할 경우, 미리 서명된 URL은 URL에서 식별된 객체에 대한 액세스를 부여합니다. 즉, 객체를 업로드하기 위해 미리 서명된 URL을 수신하는 경우, 미리 서명된 URL의 생성자가 해당 객체를 업로드하는 데 필요한 권한을 보유하는 경우에만 객체를 업로드할 수 있습니다.

모든 객체 및 버킷은 기본적으로 비공개입니다. 사용자/고객이 특정 객체를 버킷에 업로드할 수 있기를 원하는 경우 미리 서명된 URL이 유용하지만 AWS 보안 자격 증명 또는 권한을 요구하지는 않습니다.

미리 서명된 URL을 생성하는 경우 보안 자격 증명을 제공한 후 버킷 이름, 객체 키, HTTP 메서드(객체 업로드 PUT) 및 만료 날짜/시간을 지정해야 합니다. 사전 서명된 URL은 지정된 기간 동안만 유효합니다. 즉, 만료 날짜 및 시간 전에 작업을 시작해야 합니다. 작업이 멀티파트 업로드와 같이 여러 단계로 구성된 경우 만료 전에 모든 단계를 시작해야 합니다. 그렇지 않으면 Amazon S3가 만료된 URL로 단계를 시작하려고 시도할 때 오류가 발생합니다.

미리 서명된 URL은 만료 날짜 및 시간까지 여러 번 사용할 수 있습니다.

참고

유효한 보안 자격 증명을 가진 사용자는 누구나 미리 서명된 URL을 만들 수 있습니다. 단, 미리 서명된 URL에서 제공하려는 작업을 수행할 권한이 있는 사용자가 생성해야 이 URL을 통해 성공적으로 객체를 업로드할 수 있습니다.

Java, .NET, Ruby, PHP, Node.jsPython용 AWS SDK를 사용하여 미리 서명된 URL을 프로그래밍 방식으로 생성할 수 있습니다.

Microsoft Visual Studio를 사용하는 경우 AWS Explorer를 사용하여 코드를 작성하지 않고도 미리 서명된 객체 URL을 생성할 수도 있습니다. 누구라도 유효한 사전 서명된 URL을 수신하면 프로그래밍 방식으로 객체를 업로드할 수 있습니다. 자세한 내용은 AWS Explorer의 Amazon S3 사용을 참조하십시오. AWS Explorer를 설치하는 방법에 대한 자세한 내용은 AWS SDK, CLI 및 Explorer 사용 단원을 참조하십시오.

미리 서명된 URL 기능 제한

미리 서명된 URL을 사용하면 S3 버킷에 액세스하는 데 사용할 수 있는 URL을 생성할 수 있습니다. 미리 서명된 URL을 생성하면 특정 작업과 연결됩니다. URL을 공유할 수 있으며 URL에 액세스할 수 있는 모든 사용자는 원래 서명 사용자인 것처럼 URL에 포함된 작업을 수행할 수 있습니다. URL이 만료되어 만료 시간에 도달하면 더 이상 작동하지 않습니다. URL의 기능은 미리 서명된 URL을 만든 사용자의 권한에 의해 제한됩니다.

미리 서명된 URL은 기본적으로 이를 소유한 고객에게 액세스 권한을 부여하는 보유자 토큰입니다. 따라서 이러한 URL은 적절하게 보호하는 것이 좋습니다.

특정 네트워크 경로에 대해 미리 서명된 URL 및 모든 S3 액세스의 사용을 제한하려는 경우 특정 네트워크 경로가 필요한 AWS IAM(Identity and Access Management) 정책을 작성할 수 있습니다. 이러한 정책은 호출을 하는 IAM 보안 주체, Amazon S3 버킷 또는 그 두 가지 모두에 설정할 수 있습니다. 보안 주체에 대한 네트워크 경로 제한은 해당 자격 증명의 사용자가 지정된 네트워크에서 요청해야 합니다. 버킷에 대한 제한은 해당 버킷에 대한 액세스를 지정된 네트워크에서 시작된 요청에만 제한합니다. 이러한 제한은 미리 서명된 URL 시나리오 외부에서도 적용됩니다.

사용하는 IAM 전역 조건은 엔드포인트 유형에 따라 달라집니다. Amazon S3용 퍼블릭 엔드포인트를 사용하는 경우 aws:SourceIp를 사용합니다. Amazon S3에 대해 VPC 엔드포인트를 사용하는 경우 aws:SourceVpc 또는 aws:SourceVpce을 사용합니다.

다음 IAM 정책 설명에서는 보안 주체가 지정된 네트워크 범위에서만 AWS에 액세스해야 합니다. 이 정책 설명을 마련하면 모든 액세스가 해당 범위에서 시작되어야 합니다. 여기에는 S3에 대해 미리 서명된 URL을 사용하는 사례가 포함됩니다.

{ "Sid": "NetworkRestrictionForIAMPrincipal", "Effect": "Deny", "Action": "", "Resource": "", "Condition": { "NotIpAddressIfExists": { "aws:SourceIp": "IP-address" }, "BoolIfExists": { "aws:ViaAWSService": "false" } } }