S3 on Outposts에서 미리 서명된 URL 사용 - Amazon Simple Storage Service

S3 on Outposts에서 미리 서명된 URL 사용

버킷 정책을 업데이트하지 않고 Outpost에 로컬로 저장된 객체에 한시적 액세스 권한을 부여하려면 미리 서명된 URL을 사용할 수 있습니다. 버킷 소유자는 미리 서명된 URL을 사용하여 Virtual Private Cloud(VPC)의 사용자와 객체를 공유하거나 이들에게 객체를 업로드 또는 삭제할 수 있는 권한을 부여할 수 있습니다.

AWS SDK 또는 AWS Command Line Interface(AWS CLI)를 사용하여 미리 서명된 URL을 생성하면 URL을 특정 작업과 연결합니다. 또한 최소 1초 및 최대 7일의 사용자 지정 만료 시간을 선택하여 미리 서명된 URL에 대한 한시적 액세스 권한을 부여할 수 있습니다. 미리 서명된 URL을 공유하면 VPC의 사용자가 원래 서명 사용자인 것처럼 URL에 포함된 작업을 수행할 수 있습니다. URL이 만료 시간에 도달하면 URL이 만료되고 더 이상 작동하지 않습니다.

미리 서명된 URL 기능 제한

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

AWS Signature Version 4(SigV4)

사전 서명된 URL 요청이 AWS Signature Version 4(SigV4)를 사용하여 인증될 때 특정 동작을 적용하기 위해 버킷 정책 및 액세스 포인트 정책에서 조건 키를 사용할 수 있습니다. 예를 들어 서명이 10분 이상 지난 경우, example-outpost-bucket 버킷의 객체에 대한 Amazon S3 on Outposts 사전 서명된 URL 요청을 거부하는 s3-outposts:signatureAge 조건을 사용하는 버킷 정책을 생성할 수 있습니다. 이 예제를 사용하려면 user input placeholders를 사용자의 정보로 대체합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Deny a presigned URL request if the signature is more than 10 minutes old", "Effect": "Deny", "Principal": {"AWS":"444455556666"}, "Action": "s3-outposts:*", "Resource": "arn:aws:s3-outposts:us-east-1:111122223333:outpost/op-01ac5d28a6a232904/bucket/example-outpost-bucket/object/*", "Condition": { "NumericGreaterThan": {"s3-outposts:signatureAge": 600000}, "StringEquals": {"s3-outposts:authType": "REST-QUERY-STRING"} } } ] }

사전 서명된 URL 요청이 서명 버전 4를 사용하여 인증될 때 특정 동작을 적용하는 데 사용할 수 있는 조건 키 및 추가 예제 정책 목록은 AWS Signature Version 4(SigV4) 인증별 정책 키 섹션을 참조하세요.

네트워크 경로 제한

특정 네트워크 경로에 대해 미리 서명된 URL 및 모든 S3 on Outposts 액세스의 사용을 제한하려는 경우, 특정 네트워크 경로가 필요한 정책을 작성할 수 있습니다. 호출을 실행하는 IAM 보안 주체에 대한 제한을 설정하려면 자격 증명 기반 AWS Identity and Access Management(IAM) 정책(예: IAM 사용자, 그룹 또는 역할 정책)을 사용할 수 있습니다. S3 on Outposts 리소스에 대한 제한을 설정하려면 리소스 기반 정책(예: 버킷 및 액세스 포인트 정책)을 사용할 수 있습니다.

IAM 보안 주체에 대한 네트워크 경로 제한은 해당 보안 인증 정보의 사용자가 지정된 네트워크에서 요청해야 합니다. 버킷 또는 액세스 포인트에 대한 제한은 해당 리소스에 대한 모든 요청이 지정된 네트워크에서 시작되도록 요구합니다. 이러한 제한은 미리 서명된 URL 시나리오 외부에서도 적용됩니다.

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

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

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

aws:SourceIP AWS 전역 조건 키를 사용하여 S3 on Outposts 버킷에 대한 액세스를 특정 네트워크 범위로 제한하는 버킷 정책 예제는 S3 on Outposts로 IAM 설정 섹션을 참조하세요.

미리 서명된 URL을 생성할 수 있는 사용자

유효한 보안 자격 증명을 가진 사용자는 누구나 미리 서명된 URL을 만들 수 있습니다. 단, VPC의 사용자가 객체에 성공적으로 액세스하려면 미리 서명된 URL의 기반이 되는 작업을 수행할 권한이 있는 사람이 미리 서명된 URL을 생성해야 합니다.

다음 보안 인증 정보를 사용하여 미리 서명된 URL을 만들 수 있습니다.

  • IAM 인스턴스 프로파일: 최대 6시간 동안 유효함.

  • AWS Security Token Service: AWS 계정 계정 루트 사용자 또는 IAM 사용자의 보안 인증 정보 등의 영구 보안 인증 정보를 통해 서명된 경우 최대 36시간 동안 유효함.

  • IAM 사용자: AWS 서명 버전 4를 사용할 경우 최대 7일 동안 유효함.

    최대 7일 동안 유효한 미리 서명된 URL을 생성하려면 먼저 IAM 사용자 보안 인증 정보(액세스 키 및 비밀 키)를 사용 중인 SDK에 위임합니다. 그런 다음 AWS 서명 버전 4를 사용하여 미리 서명된 URL을 생성합니다.

참고
  • 임시 토큰을 사용하여 미리 서명된 URL을 생성할 경우, URL의 만료 시간이 토큰 만료 시간보다 이후인 경우에도 토큰이 만료되면 URL도 만료됩니다.

  • 미리 서명된 URL은 해당 URL을 소유한 모든 사람에게 S3 on Outposts 버킷에 대한 액세스 권한을 부여하므로, URL을 적절하게 보호하는 것이 좋습니다. 미리 서명된 URL 보호에 대한 자세한 내용은 미리 서명된 URL 기능 제한 섹션을 참조하세요.

S3 on Outposts는 미리 서명된 URL의 만료 날짜 및 시간을 언제 확인하나요?

HTTP 요청 시 S3 on Outposts는 서명된 URL의 만료 날짜와 시간을 확인합니다. 예를 들어 클라이언트가 만료 시간 직전에 대용량 파일을 다운로드하기 시작한 경우, 다운로드 중에 만료 시간이 경과해도 다운로드는 진행됩니다. 단, 연결이 끊어진 경우 클라이언트가 만료 시간 이후에 다운로드를 다시 시작하는 것은 불가능합니다.

미리 서명된 URL을 사용하여 객체를 공유하거나 업로드하는 방법에 대한 자세한 내용은 다음 주제를 참조하세요.