S3 Block Public Access
Keep all four settings enabled at both the account and bucket levels unless public access is explicitly required. New buckets have Block Public Access enabled by default.
Centrally enforce settings across accounts with AWS Organizations.
Docs β
IAM policies
Identity-based policies define which S3 actions IAM users, groups, and roles can perform. Grant only the required actions and resource ARNs.
An explicit deny overrides an allow.
Docs β
Bucket policies
Resource-based policies control access to one bucket and its objects, including cross-account access. Combine principals, actions, resources, and conditions.
Use conditions to restrict organization, network, TLS, and encryption requirements.
Docs β
RCPs and SCPs
AWS Organizations resource control policies constrain permissions available to S3 resources; service control policies constrain principals in member accounts.
They set maximum permissions. They never grant access.
Docs β
S3 Access Points
Create named endpoints with their own policies for shared datasets or applications. An access point policy and the underlying bucket policy work together.
Access points can be restricted to requests originating from a VPC.
Docs β
S3 Access Grants
Grant scoped access by bucket, prefix, or object to IAM identities and users or groups from a corporate directory.
Integrate corporate directory identities through IAM Identity Center.
Docs β
Access control lists (ACLs)
Legacy grants can provide basic bucket or object permissions to other AWS accounts. New buckets use Bucket owner enforced Object Ownership, which disables ACLs.
Keep ACLs disabled unless a legacy integration specifically requires them.
Docs β
Presigned URLs
Provide time-limited access to a specific operation using the permissions of the identity that created the URL.
Treat them as bearer tokens, keep lifetimes short, and restrict signature age when appropriate.
Docs β
CORS
Controls which browser origins, methods, and headers may make cross-origin requests to a bucket.
CORS does not authorize a request. IAM, bucket policies, and other access controls still apply.
Docs β
MFA Delete
Requires MFA to change a bucketβs versioning state or permanently delete an object version.
Only the bucket ownerβs root account can enable it, using the API or CLI. Incompatible with lifecycle configurations.
Docs β
Gateway endpoints
Route S3 traffic privately from a VPC without an internet gateway or NAT device. Gateway endpoints have no additional charge.
Use endpoint and bucket policies to limit accessible buckets and actions.
Docs β
Interface endpoints
Use AWS PrivateLink for private S3 access from on premises over VPN or Direct Connect, or from connected VPCs in other Regions.
Interface endpoint pricing applies.
Docs β
TLS enforcement
Deny requests that do not use secure transport with the aws:SecureTransport condition in a bucket policy.
Account for AWS service principals when denying on network conditions; service-to-service context can be redacted.
Docs β