Bird
Raised Fist0
GCPcloud~15 mins

Secret Manager for credentials in GCP - Mini Project: Build & Apply

Choose your learning style10 modes available
Secret Manager for credentials
📖 Scenario: You are building a secure cloud application on Google Cloud Platform (GCP). You need to store sensitive credentials safely so that only authorized services can access them.Using GCP Secret Manager helps keep your credentials safe and separate from your code.
🎯 Goal: Create a secret in GCP Secret Manager with a specific name and secret data. Then configure access permissions to allow a service account to read the secret.
📋 What You'll Learn
Create a secret named my-db-password in Secret Manager
Add the secret data SuperSecret123! as the first version
Create a variable for the service account email my-service-account@my-project.iam.gserviceaccount.com
Grant the service account the roles/secretmanager.secretAccessor role on the secret
💡 Why This Matters
🌍 Real World
Storing database passwords, API keys, and other sensitive credentials securely in cloud applications.
💼 Career
Essential skill for cloud engineers and developers to manage secrets safely and follow security best practices.
Progress0 / 4 steps
1
Create the secret resource
Create a variable called secret_name and set it to the string "projects/my-project/secrets/my-db-password".
GCP
Hint

The secret resource name includes the project ID and the secret ID.

2
Set the service account email
Create a variable called service_account_email and set it to the string "my-service-account@my-project.iam.gserviceaccount.com".
GCP
Hint

The service account email is used to grant access permissions.

3
Add the secret data version
Create a variable called secret_data and set it to the string "SuperSecret123!".
GCP
Hint

This is the sensitive password you want to store securely.

4
Grant access permission to the service account
Create a variable called access_role and set it to the string "roles/secretmanager.secretAccessor" to grant read access to the secret.
GCP
Hint

This role allows the service account to read the secret value.

Practice

(1/5)
1. What is the main purpose of Google Cloud Secret Manager?
easy
A. To host websites and web applications
B. To securely store and manage sensitive information like passwords and API keys
C. To analyze large datasets quickly
D. To create virtual machines for computing tasks

Solution

  1. Step 1: Understand Secret Manager's role

    Secret Manager is designed to keep sensitive data safe and accessible only to authorized users.
  2. Step 2: Compare options with Secret Manager's function

    Options A, C, and D describe other cloud services, not Secret Manager.
  3. Final Answer:

    To securely store and manage sensitive information like passwords and API keys -> Option B
  4. Quick Check:

    Secret Manager = Secure storage [OK]
Hint: Secret Manager = safe storage for secrets [OK]
Common Mistakes:
  • Confusing Secret Manager with compute or storage services
  • Thinking it hosts websites or runs code
  • Assuming it analyzes data
2. Which command correctly creates a new secret named db-password in Secret Manager?
easy
A. gcloud secrets create db-password --replication-policy="automatic"
B. gcloud secret create db-password --auto-replication
C. gcloud secrets add db-password --replication=auto
D. gcloud create secret db-password --replication-policy=manual

Solution

  1. Step 1: Recall correct gcloud syntax for creating secrets

    The correct command uses gcloud secrets create with the secret name and replication policy.
  2. Step 2: Check each option's syntax

    gcloud secrets create db-password --replication-policy="automatic" matches the correct syntax exactly. Options A, B, and C have incorrect command structure or flags.
  3. Final Answer:

    gcloud secrets create db-password --replication-policy="automatic" -> Option A
  4. Quick Check:

    Correct command syntax = gcloud secrets create db-password --replication-policy="automatic" [OK]
Hint: Use 'gcloud secrets create' with replication policy [OK]
Common Mistakes:
  • Using 'secret' instead of 'secrets' in command
  • Wrong flag names like --auto-replication
  • Incorrect command order or missing quotes
3. Given this Python code snippet accessing a secret version:
from google.cloud import secretmanager
client = secretmanager.SecretManagerServiceClient()
name = "projects/my-project/secrets/api-key/versions/latest"
response = client.access_secret_version(name=name)
payload = response.payload.data.decode("UTF-8")
print(payload)

What will this code print if the secret value is supersecret123?
medium
A. supersecret123
B. b'supersecret123'
C. api-key
D. projects/my-project/secrets/api-key/versions/latest

Solution

  1. Step 1: Understand the code flow

    The code accesses the latest version of the secret named 'api-key' and decodes the binary data to a UTF-8 string.
  2. Step 2: Determine the printed output

    Since payload.data is decoded, the output is the plain string 'supersecret123', not bytes or other values.
  3. Final Answer:

    supersecret123 -> Option A
  4. Quick Check:

    Decoded secret value = 'supersecret123' [OK]
Hint: Decoded secret data prints as plain string [OK]
Common Mistakes:
  • Printing raw bytes without decoding
  • Confusing secret name with secret value
  • Expecting metadata instead of secret content
4. You try to access a secret but get a permission denied error. What is the most likely cause?
medium
A. The secret value is empty
B. The secret does not exist in the project
C. The secret version is disabled
D. The service account lacks the Secret Manager Secret Accessor role

Solution

  1. Step 1: Analyze permission denied error context

    Permission denied usually means the caller lacks rights to access the secret.
  2. Step 2: Identify required role for access

    The Secret Manager Secret Accessor role grants permission to read secret versions. Without it, access is denied.
  3. Final Answer:

    The service account lacks the Secret Manager Secret Accessor role -> Option D
  4. Quick Check:

    Permission denied = missing access role [OK]
Hint: Check service account roles for Secret Accessor permission [OK]
Common Mistakes:
  • Assuming secret absence causes permission error
  • Ignoring secret version state
  • Thinking empty secret causes permission denied
5. You want to rotate a database password stored in Secret Manager without downtime. Which approach is best?
hard
A. Manually update the password in the database and Secret Manager at the same time
B. Delete the old secret and create a new secret with the new password
C. Create a new secret version with the new password and update your app to use the latest version
D. Store the password in a config file instead of Secret Manager

Solution

  1. Step 1: Understand secret rotation best practice

    Adding a new secret version allows smooth transition without deleting old data, avoiding downtime.
  2. Step 2: Evaluate options for zero downtime

    Create a new secret version with the new password and update your app to use the latest version uses versioning and app update to switch secrets seamlessly. Delete the old secret and create a new secret with the new password deletes data causing downtime. Manually update the password in the database and Secret Manager at the same time risks inconsistency. Store the password in a config file instead of Secret Manager is insecure.
  3. Final Answer:

    Create a new secret version with the new password and update your app to use the latest version -> Option C
  4. Quick Check:

    Rotate by adding new version, not deleting [OK]
Hint: Rotate secrets by adding versions, not deleting old ones [OK]
Common Mistakes:
  • Deleting secrets causing downtime
  • Updating database and secret separately risking mismatch
  • Storing passwords insecurely outside Secret Manager
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard