0
votes

I'm just getting in touch with EC2 and came across the IAM Role concept. This question is to clear my doubt about the concept on restriction level.

Lets say I have an EC2 instance with attached IAM Role Role A which posses one policy AmazonS3ReadOnlyAccess, correct me if i'm wrong but it means this particular instance only allow to perform S3 Read only operation.

Now says I created a User with Programmatic access and AmazonS3FullAccess policy.

If this user SSH into the EC2 instance, can he write file to s3 ?

I still unable to try it out by myself as I don't have a linux machine and still figuring on how to connect to Ec2 using putty

1
If you want to connect to EC2 linux machine docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.htmlSailesh Kotha

1 Answers

3
votes

Lets say I have an EC2 instance with attached IAM Role Role A which posses one policy AmazonS3ReadOnlyAccess, correct me if i'm wrong but it means this particular instance only allow to perform S3 Read only operation.

Yes

Now says I created a User with Programmatic access and AmazonS3FullAccess policy. If this user SSH into the EC2 instance, can he write file to s3 ?

IAM users cannot SSH to EC2 instances using IAM user credentials. After provisioning a EC2 instance, you need to use regular Operating System User constructs, to SSH to the Server (Default user keys created by AWS).

In addition if a user SSH to EC2 instance and use a Programatic Access Credentials of a EC2 User through AWS CLI, REST API or SDKs (Doesn't have to be a EC2 instance, it also can be your on-premise server) then if the IAM User has a S3 write policy, the CLI commands or API calls or the code using SDK is able to write files to S3.

So in a summary

  • Use IAM roles if you are running a EC2 instance, for your CLI commands, Code with SDK, or REST API calls to access AWS Resources.
  • If you are using a server on-premise or outside AWS, use IAM User's Programatic Access keys to do the same.

Insight on how IAM roles work internally with EC2

  • When you attach a IAM role to a EC2 instance, AWS periodically updates the EC2 instance with temporal Access Credentials to that EC2 instance (Which is a good security practice).
  • These credentials are accessible through the Metadata URLs for the CLI, REST API and Code using SDKs inside EC2 instance.

Note: When using Roles, its much secure since it uses Temporal access credentials vs IAM Users Programatic Access uses Long lived access credentials.