Subham Nandi
Posted on September 2, 2024
1. Managing S3 Bucket Access
This section covers how to restrict access to an S3 bucket, allowing only specific users (like the bucket owner) to have access.
Step 1: Grant S3 Full Access to an IAM User
-
Log into AWS Management Console:
- Use your credentials to log into the AWS Management Console.
-
Navigate to IAM (Identity and Access Management):
- From the AWS Management Console, search for and select IAM.
-
Create an IAM User (if not already created):
- Go to Users and click Add user.
- Enter a username (e.g.,
devops-user
). - For Access type, select Programmatic access and AWS Management Console access.
- Attach the policy AmazonS3FullAccess to the user to grant full access to S3.
- Complete the process by reviewing and creating the user.
-
Verify S3 Access:
- Log in as the IAM user or switch roles to this user.
- Navigate to S3 in the AWS Management Console.
- Ensure that the IAM user can see and access all S3 buckets.
Step 2: Restrict Access Using Bucket Policies
-
Navigate to S3 and Select Your Bucket:
- Go to S3 in the AWS Management Console.
- Click on the bucket you want to manage.
-
Go to the Permissions Tab:
- Once inside the bucket, click on the Permissions tab.
- Scroll down to Bucket Policy.
-
Edit the Bucket Policy:
- Click Edit under the Bucket Policy section.
- To restrict access, add the following JSON policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
],
"Condition": {
"StringNotEquals": {
"aws:PrincipalArn": "arn:aws:iam::your-account-id:root"
}
}
}
]
}
-
Explanation:
- Effect: Denies the specified actions.
-
Principal:
*
means everyone. -
Action:
s3:*
means all S3 actions. - Resource: Specifies the bucket and all objects within it.
-
Condition:
StringNotEquals
ensures the policy applies to everyone except the bucket owner. - Replace
"your-bucket-name"
with your actual S3 bucket name. - Replace
"your-account-id"
with your actual AWS account ID.
-
Save the Policy:
- Click Save changes to apply the policy.
Step 3: Validate Access Restrictions
-
Test Access as the IAM User:
- Log in as the IAM user in an incognito browser or a separate session.
- Attempt to access the S3 bucket that was just restricted.
-
Verify Access Denial:
- The IAM user should receive an "Insufficient Permissions" error when trying to list or download objects from the bucket.
- This confirms that the policy is correctly restricting access.
2. Hosting a Static Website on S3
This section will guide you through setting up an S3 bucket to host a static website.
Step 1: Create and Configure the S3 Bucket
-
Create a New S3 Bucket:
- In the AWS Management Console, go to S3.
- Click on Create bucket.
- Provide a unique bucket name (e.g.,
my-website-bucket
). - Choose the appropriate AWS region.
-
Configure Bucket Settings:
- Under Bucket settings, leave all options as default or adjust them according to your requirements.
- Ensure that Block all public access is checked initially (you'll change this later).
-
Upload Your Website Files:
- Click on the bucket name to enter it.
- Click Upload and upload your
index.html
(and any other necessary files).
Step 2: Enable Static Website Hosting
-
Navigate to the Properties Tab:
- Inside your bucket, click on the Properties tab.
-
Enable Static Website Hosting:
- Scroll down to Static website hosting.
- Click Edit and then Enable static website hosting.
- Select Host a static website.
- Enter
index.html
as the Index document. - If you have an error page, specify the Error document (e.g.,
error.html
). - Click Save changes.
-
Public Access Configuration:
- By default, your bucket will still be private.
Step 3: Adjust Bucket Permissions for Public Access
-
Unblock Public Access:
- Go to the Permissions tab.
- Click Edit under Block all public access.
- Uncheck Block all public access and save the changes.
-
Confirm Public Access Changes:
- A confirmation dialog will appear; click Confirm.
Step 4: Add a Bucket Policy for Public Read Access
-
Add a Public Read Bucket Policy:
- Go to Bucket Policy under the Permissions tab.
- Add the following policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
- Replace
"your-bucket-name"
with your actual bucket name. - This policy allows public read access to all objects in your bucket.
-
Save the Policy:
- Click Save changes to apply the policy.
Step 5: Access the Static Website
-
Retrieve the Website URL:
- Go back to the Properties tab.
- Scroll down to Static website hosting.
- The Bucket website endpoint will provide a URL (e.g.,
http://your-bucket-name.s3-website-region.amazonaws.com
).
-
Test Your Website:
- Open the URL in your web browser to see your static website live.
Posted on September 2, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 25, 2024