exam questions

Exam AWS Certified Solutions Architect - Professional All Questions

View all questions & answers for the AWS Certified Solutions Architect - Professional exam

Exam AWS Certified Solutions Architect - Professional topic 1 question 34 discussion

You are designing a photo-sharing mobile app. The application will store all pictures in a single Amazon S3 bucket.
Users will upload pictures from their mobile device directly to Amazon S3 and will be able to view and download their own pictures directly from Amazon S3.
You want to configure security to handle potentially millions of users in the most secure manner possible.
What should your server-side application do when a new user registers on the photo-sharing mobile application?

  • A. Create an IAM user. Update the bucket policy with appropriate permissions for the IAM user. Generate an access key and secret key for the IAM user, store them in the mobile app and use these credentials to access Amazon S3.
  • B. Create an IAM user. Assign appropriate permissions to the IAM user. Generate an access key and secret key for the IAM user, store them in the mobile app and use these credentials to access Amazon S3.
  • C. Create a set of long-term credentials using AWS Security Token Service with appropriate permissions. Store these credentials in the mobile app and use them to access Amazon S3.
  • D. Record the user's information in Amazon RDS and create a role in IAM with appropriate permissions. When the user uses their mobile app, create temporary credentials using the AWS Security Token Service "AssumeRole" function. Store these credentials in the mobile app's memory and use them to access Amazon S3. Generate new credentials the next time the user runs the mobile app.
  • E. Record the user's information in Amazon DynamoDB. When the user uses their mobile app, create temporary credentials using AWS Security Token Service with appropriate permissions. Store these credentials in the mobile app's memory and use them to access Amazon S3. Generate new credentials the next time the user runs the mobile app.
Show Suggested Answer Hide Answer
Suggested Answer: E 🗳️

Comments

Chosen Answer:
This is a voting comment (?). It is better to Upvote an existing comment if you don't have anything to add.
Switch to a voting comment New
rasagulla
Highly Voted 3 years, 7 months ago
Is it 'D' because it mentions about 'AssumeRole' function with STS Service and not 'E' because tho' it also uses STS service it does not explicitly mention the 'AssumeRole' function. Except for that , i feel even DynamoDB can the scenario better.
upvoted 18 times
...
saddly
Highly Voted 3 years, 6 months ago
I would go with DynamoDB. I don't think "AssumeRole" statement is important as for STS this is almost the only function. Also it say use STS to generate the credential. My point is RDS vs DynamoDB For this App, it's read heavy. From scaling out perspective DynamoDB is better.
upvoted 14 times
Chuky64
2 years, 10 months ago
I agree, best option is DynamoDB for millons of users.
upvoted 3 times
...
Cal88
2 years, 6 months ago
Yes DynamoDB would be better , but their is no mention of the role in that answer. You can't use STS to assume a "role" without actually creating that role so I would go with answer D
upvoted 2 times
...
...
Chinta
Most Recent 7 months, 1 week ago
D is the correct one
upvoted 1 times
...
amministrazione
8 months, 3 weeks ago
E. Record the user's information in Amazon DynamoDB. When the user uses their mobile app, create temporary credentials using AWS Security Token Service with appropriate permissions. Store these credentials in the mobile app's memory and use them to access Amazon S3. Generate new credentials the next time the user runs the mobile app.
upvoted 1 times
...
Takshashila
1 year, 7 months ago
Selected Answer: E
D. Record the user's information in Amazon RDS...create temporary credentials using the AWS Security Token Service "AssumeRole" function... This approach is more secure as it uses temporary credentials provided by STS. However, using RDS just to store user information might be overkill for this use case. E. Record the user's information in Amazon DynamoDB...create temporary credentials using AWS Security Token Service... This approach is similar to option D but uses DynamoDB, which is a more scalable and cost-effective solution for storing user information compared to RDS. It also uses temporary credentials provided by STS, which is the recommended approach for mobile apps. Given the options, the best and most secure approach for handling potentially millions of users in a photo-sharing mobile app is
upvoted 3 times
...
koundi_aws
1 year, 8 months ago
The answer is E according to me. Longterm credentials are a strict NO fron a security standpoint. Also, the application needs to scale for a large user base. This makes Dynamo DB a more suitable option
upvoted 1 times
...
SkyZeroZx
1 year, 10 months ago
Selected Answer: D
keywords = Amazon DynamoDB && AWS STS Then D
upvoted 1 times
...
magnonobre
2 years ago
Selected Answer: D
In this case, option D would be the better option. This is because it uses temporary credentials generated by the AWS Security Token Service's AssumeRole function, which are short-lived and rotated frequently. This reduces the risk of credential theft or misuse, which is important in a large-scale application with potentially millions of users. Additionally, by recording user information in Amazon RDS, it provides a centralized and secure way to manage user information and access control.
upvoted 1 times
...
orwolfstein
2 years, 1 month ago
The correct answer is defiantly E. here is why A,B and C are wrong for all the reasons mentioned in other comments As for D and E. AIM users are not designed for application users, and you will not create them for each user... It is mostly used for console/cli users and backend applications. this is also supported by AWS documentation: For temp creds The AWS STS API operations create a new session with temporary security credentials that include an access key pair and a session token. The access key pair consists of an access key ID and a secret key. Users (or an application that the user runs) can use these credentials to access your resources. You can create a role session and pass session policies and session tags programmatically using AWS STS API operations for assuming role: The AssumeRole API operation is useful for allowing existing IAM users to access AWS resources that they don't already have access to. For example, the user might need access to resources in another AWS account. As you can see, there is a difference in narrative and intent
upvoted 3 times
...
clarksu
2 years, 2 months ago
Selected Answer: E
D is definitely WRONG and deceptive, Why? - The Question asked under condition of 'when a new user registers ' , and what your app will do, only the first sentence will answer to this. You WILL NOT create an IAM role on the basis of your end user. Same reason, You will not create an IAM user on the basis of end user , this rules out A, B ; Long term credential is not the most secure way, rules out C.
upvoted 4 times
...
clarksu
2 years, 2 months ago
Selected Answer: E
D is definitely WRONG and deceptive, The Question asked under condition of 'when a new user registers ' , You WILL NOT create an IAM user on the basis of your end user. It takes cover under assume role. Well done, AWS.
upvoted 2 times
...
sr987654
2 years, 2 months ago
Selected Answer: D
I wuld go with D as that is the only one that makes it clear that the Assume Role would be used
upvoted 1 times
...
henridoeller
2 years, 2 months ago
There is a limit to the number of IAM roles (yes this can be raised via support tickets a couple of times). The question is stating millions of users. You do not want to have millions of IAM roles, although this would be the most secure way to make sure a user will not access different files in this single S3 bucket.
upvoted 1 times
...
colortex
2 years, 2 months ago
I would go for E. User information is better to be stored in DynamoDB plus its high performance in read/write than RDS
upvoted 1 times
...
CertNerd1234
2 years, 3 months ago
Selected Answer: E
Why not D: “ Record the user's information in Amazon RDS AND create a role in IAM with appropriate permissions” So for every new user an IAM role is created?! That going to be a hole lot of roles. Better to create one role and let it be assumed (temp credentials) by every user as needed.
upvoted 1 times
...
TigerInTheCloud
2 years, 4 months ago
Selected Answer: E
E. DynamoDB, simpler than RDS, and Cognito, with IAM role through STS to get temporary credentials.
upvoted 1 times
...
jamat
2 years, 6 months ago
I go for D IAM role + AssumeRole make perfect sense here Only 1 IAM role could used for all users with a variable https://youtu.be/-1gkwLBfBCo Finally RDS is perfectly fine with millions of records, isn’t it..?
upvoted 1 times
...
Community vote distribution
A (35%)
C (25%)
B (20%)
Other
Most Voted
A voting comment increases the vote count for the chosen answer by one.

Upvoting a comment with a selected answer will also increase the vote count towards that answer by one. So if you see a comment that you already agree with, you can upvote it instead of posting a new comment.

SaveCancel
Loading ...
exam
Someone Bought Contributor Access for:
SY0-701
London, 1 minute ago