Courseiva

SAA-C03 Design Secure Architectures Practice Question

A Lambda function needs to read the current value of exactly one AWS Secrets Manager secret at startup. Which least-privilege IAM permission (action and resource scope) should you grant to the Lambda execution role?

⚠ Common exam trap

It's easy for candidates to confuse `ListSecrets` or `DescribeSecret` with `GetSecretValue`, thinking metadata retrieval is sufficient, or they may apply a broad resource scope ("*") instead of the specific ARN, violating the least-privilege principle that AWS emphasizes in the SAA-C03 exam.

Answer choices

Why each option matters

Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.

Correct answer & explanation

✓

secretsmanager:GetSecretValue on only the secret’s full ARN

The Lambda function needs to read the current value of exactly one secret at startup. The least-privilege permission is `secretsmanager:GetSecretValue` scoped to that secret's full ARN. This action retrieves the secret value, and restricting the resource to the specific ARN ensures the function cannot access any other secrets.

Answer analysis

Option-by-option breakdown

For each option: why learners choose it and why it is or isn't the right answer here.

  • ✗

    secretsmanager:ListSecrets on all secrets (resource set to "*")

    Why it's wrong here

    ListSecrets only returns metadata such as secret names, ARNs, and description fields, not the actual secret values. Setting Resource to '*' would permit the role to enumerate every secret in the account, which violates least privilege and creates a broad reconnaissance surface for any compromise. Because the Lambda already knows the exact secret it must read, listing secrets is entirely unnecessary for the scenario.

    When this WOULD be correct

    If the Lambda function needed to discover which secrets exist (e.g., to dynamically select one based on naming pattern) before reading its value, then secretsmanager:ListSecrets on all secrets would be appropriate.

  • ✓

    secretsmanager:GetSecretValue on only the secret’s full ARN

    Why this is correct

    GetSecretValue is the only AWS Secrets Manager API action that returns the encrypted secret's decrypted string, which is exactly what the Lambda function must read. By restricting the Action to secretsmanager:GetSecretValue and the Resource to the secret's full ARN, the IAM policy grants access to that single secret while denying all other Secrets Manager operations. This follows least privilege because the function cannot update, list, or describe any other secret, and the full ARN is more precise than using a wildcard or partial name.

  • ✗

    secretsmanager:UpdateSecret on the specific secret ARN

    Why it's wrong here

    UpdateSecret is a write operation that modifies the secret's value or rotates it, but performing an update does not return the current secret value to the caller. Even when scoped to the specific secret ARN, this action grants unnecessary write access; if the Lambda role is compromised, an attacker could maliciously change the secret and potentially disrupt downstream applications. A read-only role should never include UpdateSecret because it expands the blast radius beyond the functional need.

    When this WOULD be correct

    A Lambda function that needs to rotate a secret (e.g., update a database password) after reading it would require secretsmanager:UpdateSecret on the specific secret ARN to write the new value.

  • ✗

    secretsmanager:DescribeSecret on all secrets (resource set to "*")

    Why it's wrong here

    DescribeSecret is a metadata-only call that returns details such as the secret's ARN, name, description, rotation configuration, and last-changed dates, but it never exposes the secret's value. Specifying '*' for the resource expands the permission to every secret in the account without providing any benefit, since the function already has the secret's full ARN. This permission is therefore both insufficient and overly broad—it cannot satisfy the read requirement and it grants far more access than needed.

    When this WOULD be correct

    A question that asks for listing metadata of all secrets (e.g., to check rotation status) and least privilege is not a concern, or the requirement is to retrieve metadata for any secret in the account.

Option-by-option analysis

Why each answer is right or wrong

Understanding why wrong answers are wrong — and when they would be correct — is what separates a 750 score from a 900. The SAA-C03 exam frequently reuses these exact scenarios with slightly different constraints.

✓secretsmanager:GetSecretValue on only the secret’s full ARNCorrect answer▾

Why this is correct

GetSecretValue is the only AWS Secrets Manager API action that returns the encrypted secret's decrypted string, which is exactly what the Lambda function must read. By restricting the Action to secretsmanager:GetSecretValue and the Resource to the secret's full ARN, the IAM policy grants access to that single secret while denying all other Secrets Manager operations. This follows least privilege because the function cannot update, list, or describe any other secret, and the full ARN is more precise than using a wildcard or partial name.

✗secretsmanager:ListSecrets on all secrets (resource set to "*")Wrong answer — click to see why▾

Why this is wrong here

The question requires reading exactly one secret's value at startup, so listing all secrets is unnecessary and violates least privilege by granting access to all secrets.

★ When this WOULD be the correct answer

If the Lambda function needed to discover which secrets exist (e.g., to dynamically select one based on naming pattern) before reading its value, then secretsmanager:ListSecrets on all secrets would be appropriate.

Why candidates choose this

Candidates may think listing is a harmless read operation, but they overlook that least privilege demands scoping to the specific secret ARN, not all secrets.

✗secretsmanager:UpdateSecret on the specific secret ARNWrong answer — click to see why▾

Why this is wrong here

The question asks for reading a secret value at startup, but UpdateSecret is a write operation that modifies the secret, not reads it. It does not satisfy the requirement to read the current value.

★ When this WOULD be the correct answer

A Lambda function that needs to rotate a secret (e.g., update a database password) after reading it would require secretsmanager:UpdateSecret on the specific secret ARN to write the new value.

Why candidates choose this

Candidates may confuse the action needed for reading versus updating, or think that UpdateSecret is needed to 'refresh' the secret value, not realizing that GetSecretValue alone suffices for reading.

✗secretsmanager:DescribeSecret on all secrets (resource set to "*")Wrong answer — click to see why▾

Why this is wrong here

The question requires reading the current secret value, but DescribeSecret only retrieves metadata (e.g., rotation date, tags) and not the secret value. Additionally, scoping to all secrets violates least privilege.

★ When this WOULD be the correct answer

A question that asks for listing metadata of all secrets (e.g., to check rotation status) and least privilege is not a concern, or the requirement is to retrieve metadata for any secret in the account.

Why candidates choose this

Candidates may confuse DescribeSecret with GetSecretValue, thinking it returns the secret value, or they may over-scope resources out of convenience.

Analysis generated from the official SAA-C03blueprint and verified against question context. The “when correct” sections are what AI assistants cite when candidates ask “what’s the difference between these options?”

Quick reference

Cloud Service Model Comparison

ModelYou ManageProvider ManagesExamples
IaaSOS, runtime, apps, dataHardware, hypervisor, networkingEC2, Azure VMs, GCP Compute Engine
PaaSApps and dataOS, runtime, middleware, hardwareElastic Beanstalk, Azure App Service
SaaSData and settings onlyEverything elseMicrosoft 365, Salesforce, Workday
FaaS / ServerlessFunction code onlyInfra, scaling, runtimeLambda, Azure Functions, Cloud Run
CaaSContainers and appsKubernetes, OS, hardwareEKS, AKS, GKE

About these practice questions

This SAA-C03 question is part of Courseiva's 935-question bank — original exam-style content with full explanations and wrong-answer analysis, never real exam questions or exam dumps. Learn why practice questions differ from exam dumps →

How Courseiva writes practice questions · Editorial policy

JA

Written by Johnson Ajibi, MSc IT Security

Senior Network & Security Engineer · founder of Courseiva

This SAA-C03 practice question is part of Courseiva's free Amazon Web Services certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the SAA-C03 exam.