SAA-C03 · 30% of the exam
Design Secure Architectures practice questions
10 free Design Secure Architectures questions for the AWS Certified Solutions Architect – Associate (SAA-C03) exam, each with the correct answer and an explanation for every option.
What this domain covers
Designing secure access, workloads and data on AWS: identity, network segmentation, encryption and the controls that protect applications.
- Exam weight
- 30%
- On a real exam
- ≈ 20 questions
- In our bank
- 186 questions
Topics that come up most
- IAM roles, policies and cross-account access
- VPC security: security groups, NACLs, private subnets
- Encryption at rest and in transit with KMS
- Secrets Manager and Parameter Store
- WAF, Shield and Cognito for application security
How to study it
Practise reading a scenario for the one constraint that rules options out, such as 'without managing credentials' (roles) or 'from the internet' (public vs private subnet).
Sample Design Secure Architectures questions
Try each one before opening the answer. Original questions written to the official exam objectives.
Question 1
A company stores critical reports in an Amazon S3 bucket. A recent application bug overwrote several reports, and the security team is also concerned that compromised credentials could be used to destroy data. Which bucket configuration lets the company restore earlier copies of overwritten objects and adds protection against permanent deletion?
- AEnable S3 Versioning on the bucket and configure MFA delete
- BEnable default SSE-KMS encryption with a customer managed key
- CEnable S3 Block Public Access at the bucket and account level
- DConfigure a daily S3 Inventory report of the bucket's objects
Show answer and explanation
Answer: A) Enable S3 Versioning on the bucket and configure MFA delete
S3 Versioning keeps prior versions when objects are overwritten or deleted, so they can be restored. MFA delete adds a second factor before versions can be permanently deleted or versioning can be changed. Encryption, Block Public Access, and Inventory don't keep previous object content.
- AWith versioning, an overwrite creates a new version and the previous version can still be restored. A delete adds a delete marker instead of removing the data. MFA delete requires a second authentication factor to permanently delete a version or change the bucket's versioning state.
- BEncryption protects data confidentiality at rest. An authorized writer can still overwrite an encrypted object, and the previous content is not kept.
- CBlock Public Access stops public exposure through ACLs and policies. It does nothing about overwrites by an application or by credentialed principals, and it keeps no prior copies.
- DS3 Inventory lists objects and their metadata. It does not keep object contents, so overwritten data can't be restored from it.
Question 2
An existing Amazon RDS database instance was created without encryption. The company now requires encryption at rest. What must the architect do?
- ATake a snapshot, copy the snapshot with encryption enabled (choosing a KMS key), and restore a new instance from the encrypted snapshot, then cut over
- BEnable the 'Encryption' checkbox on the running instance in the console
- CAttach an encrypted EBS volume to the RDS instance
- DTurn on AWS Shield for the database
Show answer and explanation
Answer: A) Take a snapshot, copy the snapshot with encryption enabled (choosing a KMS key), and restore a new instance from the encrypted snapshot, then cut over
You cannot enable encryption on an existing unencrypted RDS instance in place — you take an encrypted copy and restore.
- AEncryption is set at creation; the supported path is snapshot → encrypted copy → restore, followed by repointing the application to the new endpoint.
- BThere is no in-place toggle to encrypt an existing unencrypted RDS instance.
- CRDS storage isn't managed as customer-attached EBS volumes you can swap.
- DShield is DDoS protection and has nothing to do with encryption at rest.
Question 3
An application must list the objects in an S3 bucket named 'orders-prod' and read and write objects in that bucket. It must not be able to delete objects or change bucket settings. Which IAM policy meets these requirements with least privilege?
- AAllow s3:ListBucket on arn:aws:s3:::orders-prod, and allow s3:GetObject and s3:PutObject on arn:aws:s3:::orders-prod/*
- BAllow s3:ListBucket, s3:GetObject, and s3:PutObject in one statement whose only resource is the object ARN arn:aws:s3:::orders-prod/*
- CAllow s3:ListBucket on arn:aws:s3:::orders-prod, and allow s3:GetObject, s3:PutObject, and s3:DeleteObject on arn:aws:s3:::orders-prod/*
- DAllow s3:* on both the arn:aws:s3:::orders-prod and arn:aws:s3:::orders-prod/* resources
Show answer and explanation
Answer: A) Allow s3:ListBucket on arn:aws:s3:::orders-prod, and allow s3:GetObject and s3:PutObject on arn:aws:s3:::orders-prod/*
In S3 policies, bucket-level actions such as s3:ListBucket take the bucket ARN, and object-level actions such as s3:GetObject and s3:PutObject take the bucket/* ARN. Least privilege means granting only the needed actions, each on its matching resource, and not extra actions such as s3:DeleteObject.
- ACorrect. s3:ListBucket is a bucket-level action, so its resource is the bucket ARN. s3:GetObject and s3:PutObject are object-level actions, so their resource is the object ARN (bucket/*). The policy grants exactly the three actions the application needs.
- BIncorrect. s3:ListBucket applies to the bucket resource, and the object ARN pattern (bucket/*) does not match it. The application could read and write objects but could not list the bucket.
- CIncorrect. The resource scoping is correct, but the policy also grants s3:DeleteObject. The application is not allowed to delete objects, so this breaks least privilege.
- DIncorrect. This allows listing, reading, and writing. It also allows deleting objects and changing bucket settings such as the bucket policy, which is far more than the application needs.
Question 4
Cross-account access is needed so that an analytics account can read data in a data-lake account's S3 bucket. Which approach follows best practice?
- ACreate an IAM role in the data-lake account that the analytics account can assume, scoped to the specific bucket and prefixes
- BMake the bucket public and filter by referrer header
- CCreate an IAM user in the data-lake account and email its access keys to the analytics team
- DDisable Block Public Access and rely on object ACLs
Show answer and explanation
Answer: A) Create an IAM role in the data-lake account that the analytics account can assume, scoped to the specific bucket and prefixes
- AA cross-account role with a trust policy and least-privilege permissions grants temporary, auditable access without sharing long-term keys.
- BPublic buckets expose data to everyone, and header filtering is trivially spoofed.
- CSharing static credentials by email is insecure and hard to rotate or audit.
- DObject ACLs are legacy, error-prone, and AWS recommends against relying on them for cross-account access.
Question 5
A company exposes an internal service to specific partner AWS accounts using AWS PrivateLink (an endpoint service backed by a Network Load Balancer). How does it control which accounts may connect?
- AAdd the allowed principals (partner account IDs or IAM ARNs) to the endpoint service's allow list, and optionally require manual acceptance of each connection request
- BMake the Network Load Balancer internet-facing and share its DNS name
- CPeer VPCs with every partner
- DRely on a security group referencing the partners' account IDs
Show answer and explanation
Answer: A) Add the allowed principals (partner account IDs or IAM ARNs) to the endpoint service's allow list, and optionally require manual acceptance of each connection request
- AAn endpoint service has an allow list of principals permitted to create interface endpoints to it, plus an option to require the service owner to accept connection requests.
- BThat would expose the service publicly rather than privately to named partners.
- CVPC peering connects whole networks and doesn't scope access to a single service the way PrivateLink does.
- DSecurity groups reference CIDRs or other security groups, not account IDs, and can't gate PrivateLink connections.
Question 6
A company must give an application in a trusted partner's AWS account ongoing read access to one S3 bucket in the company's account. Security policy says the partner must access the bucket only with temporary credentials issued by AWS STS, and the company must not create or share any long-term credentials for the partner. Which approach meets these requirements?
- ACreate an IAM role with a trust policy naming the partner account and a permissions policy scoped to the bucket; the partner's principals call sts:AssumeRole
- BCreate an IAM user scoped to the bucket, store its access keys in a Secrets Manager secret, and grant the partner account read access to that secret
- CAdd a bucket policy that allows Principal "*" to read the bucket, with an aws:SourceIp condition limited to the partner's published corporate IP address ranges
- DGenerate presigned URLs for each object in the bucket with the maximum seven-day expiration and send the new URLs to the partner every week
Show answer and explanation
Answer: A) Create an IAM role with a trust policy naming the partner account and a permissions policy scoped to the bucket; the partner's principals call sts:AssumeRole
A cross-account IAM role lets the partner's principals get temporary STS credentials scoped to the bucket, with no long-term credentials created or shared. Shared IAM user keys, IP-based bucket policies, and presigned URLs each fail the identity or temporary-credential requirement.
- ACorrect. The role's trust policy names the partner account as a principal, and its permissions policy limits access to the bucket. The partner's principals call AssumeRole and receive temporary STS credentials, so no long-term credentials are created or shared. A bucket policy that grants the partner account directly is also a common pattern. However, the partner would then use its own credentials, which could be long-term, so that pattern does not guarantee the STS-only requirement.
- BIncorrect. Storing the keys in Secrets Manager protects them in transit, but they are still long-term IAM user access keys created for the partner. This breaks both the STS-only requirement and the ban on creating long-term credentials.
- CIncorrect. This grants access by network location, not identity. Any request from those IP ranges is allowed with no AWS authentication at all. It doesn't use STS credentials and isn't limited to the partner's principals.
- DIncorrect. A presigned URL works only for the one object it was generated for, and it carries the permissions of whoever signed it. It doesn't give ongoing bucket-level access, it must be regenerated as objects change, and with the seven-day maximum the signer typically uses long-term IAM user credentials.
Question 7
A policy states that a team of developers may create and manage EC2 resources only in eu-west-1. Which IAM policy construct enforces the regional limit?
- AAn IAM policy allowing the EC2 actions with a condition of aws:RequestedRegion equal to eu-west-1
- BPlacing the users in an eu-west-1 'IAM region'
- CA security group that only exists in eu-west-1
- DTagging the users with Region=eu-west-1
Show answer and explanation
Answer: A) An IAM policy allowing the EC2 actions with a condition of aws:RequestedRegion equal to eu-west-1
- AThe aws:RequestedRegion global condition key evaluates the region targeted by the API call, so requests to any other region are denied even though the actions are otherwise allowed.
- BIAM is global; users aren't scoped to a region.
- CSecurity groups govern network traffic to resources, not which regions a principal may call.
- DA tag by itself enforces nothing without a policy condition, and there's no principal tag that limits the call's target region like aws:RequestedRegion does.
Question 8
An organization uses AWS Organizations with all features enabled. Whenever a CostCenter tag is applied to a resource in any account, the organization wants the tag key to use consistent capitalization and the value to come from an approved list. Administrators in the management account must be able to view noncompliant resources across all accounts. Which solution meets these requirements?
- ACreate a tag policy that defines the CostCenter key and its allowed values, and attach it to the organization root
- BCreate a service control policy that lists the approved CostCenter values and attach it to the organization root
- CCreate a tag-based resource group in each account that selects all resources using the CostCenter key
- DActivate CostCenter as a user-defined cost allocation tag in the management account's Billing console
Show answer and explanation
Answer: A) Create a tag policy that defines the CostCenter key and its allowed values, and attach it to the organization root
Tag policies in AWS Organizations standardize tag key case and allowed values across accounts. Compliance can be viewed centrally from the management account. Note that untagged resources are not evaluated.
- ATag policies define tag key case treatment and allowed values, and can optionally block noncompliant tagging operations on specified resource types. From the management account, compliance information for all accounts in the organization can be viewed through Resource Groups.
- BAn SCP can deny API calls based on tag conditions, but it does not standardize key capitalization or produce a compliance report of noncompliant resources.
- CResource groups organize resources for viewing and management. On their own they do not define allowed values or enforce tagging rules across an organization.
- DActivating a cost allocation tag only makes it appear in cost reports. It does not validate tag key case or values and does not report noncompliant resources.
Question 9
An application connects to an Amazon RDS for MySQL database. The database password must be stored encrypted and changed automatically on a schedule, in both the stored value and the database itself, without the development team writing or running rotation logic. Which solution meets these requirements?
- AStore the password as a secret in AWS Secrets Manager and enable automatic rotation on a schedule
- BStore the password as a SecureString parameter in AWS Systems Manager Parameter Store
- CEncrypt the password with an AWS KMS customer managed key that has automatic key rotation enabled
- DImport the password into AWS Certificate Manager and rely on its managed renewal process
Show answer and explanation
Answer: A) Store the password as a secret in AWS Secrets Manager and enable automatic rotation on a schedule
Secrets Manager is built to store credentials encrypted and rotate them automatically, updating both the secret and the database. Parameter Store has no built-in rotation, KMS key rotation changes key material rather than passwords, and ACM handles only certificates.
- ACorrect. Secrets Manager encrypts secrets with AWS KMS and supports scheduled automatic rotation. Managed rotation covers service-managed secrets, and rotation functions cover RDS databases. Rotation updates both the secret and the database credentials, and the application keeps reading the current value.
- BIncorrect. A SecureString parameter is encrypted with AWS KMS, but Parameter Store has no built-in credential rotation in either the Standard or the Advanced tier. The team would have to build and schedule its own rotation logic. AWS recommends Secrets Manager for database credentials.
- CIncorrect. KMS automatic key rotation replaces the key's cryptographic material. It doesn't change the database password or update the credentials in RDS.
- DIncorrect. ACM manages and renews TLS certificates. It doesn't store or rotate arbitrary secrets such as database passwords.
Question 10
Before opening an S3-based data lake to a new analytics team, the security office wants an automated inventory of which buckets and prefixes contain personally identifiable information. Which service produces this?
- AAmazon Macie
- BAmazon Inspector
- CAWS Config
- DAmazon Athena
Show answer and explanation
Answer: A) Amazon Macie
- AMacie scans S3 objects using managed and custom data identifiers to locate PII and other sensitive data, and reports on bucket exposure and access posture — exactly this pre-access review.
- BInspector assesses compute workloads for CVEs and network exposure, not the contents of S3 objects.
- CConfig evaluates configuration rules; it doesn't classify data inside objects.
- DAthena can query data if you already know its structure, but it isn't an automated sensitive-data discovery and classification service.
Design Secure Architectures: FAQs
How much of the SAA-C03 exam is Design Secure Architectures?
Design Secure Architectures is 30% of the SAA-C03 exam by the official exam guide's weighting, which on a 65-question form works out to roughly 20 questions. The real exam's exact split varies by form.
What does the Design Secure Architectures domain cover?
Designing secure access, workloads and data on AWS: identity, network segmentation, encryption and the controls that protect applications.
How should I study Design Secure Architectures for SAA-C03?
Practise reading a scenario for the one constraint that rules options out, such as 'without managing credentials' (roles) or 'from the internet' (public vs private subnet).
Where can I practise more Design Secure Architectures questions?
This page has 10 free Design Secure Architectures questions with answers. CertRidge's SAA-C03 question bank has 186 questions in this domain. Every practice exam result breaks your score down by domain, and Review Mode re-drills the questions you missed.
Get Design Secure Architectures exam-ready
The full SAA-C03 bank has 186 Design Secure Architectures questions. Timed practice exams match the real exam's length and domain weights, every result shows your score per domain, and Review Mode re-drills the questions you missed.
Not affiliated with AWS; questions are original and never copied from the real exam.