Защита секретов с помощью AWS Secrets Manager
Перестаньте хранить учётные данные непосредственно в коде Lambda. Узнайте, как безопасно хранить, ротировать и получать ключи API и пароли баз данных с помощью AWS Secrets Manager.
«Защита секретов с помощью AWS Secrets Manager» — бесплатный урок Serverless Backend with AWS Lambda & API Gateway на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Serverless Backend with AWS Lambda & API Gateway, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Serverless Backend with AWS Lambda & API Gateway содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Why Not Hardcode Secrets?
Embedding API keys or DB passwords in your Lambda code or environment variables is risky: anyone with read access can see them, and rotating them means a redeploy.
AWS Secrets Manager centralizes secrets, encrypts them, and supports automatic rotation.
What Secrets Manager Stores
Common secrets include:
- Database credentials
- Third-party API keys
- OAuth tokens
- Encryption keys
Each secret is encrypted at rest with AWS KMS.
Creating a Secret
Secrets are stored as key/value JSON. You can create one from the CLI.
aws secretsmanager create-secret \
--name prod/db/credentials \
--secret-string '{"username":"admin","password":"S3cr3t!"}'Granting Lambda Access
Your Lambda execution role needs permission to read the secret. Scope it to the exact ARN, not a wildcard.
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:us-east-1:123:secret:prod/db/credentials-*"
}Retrieving a Secret in Code
Use the AWS SDK to fetch the secret value at runtime.
const { SecretsManager } = require("@aws-sdk/client-secrets-manager");
const sm = new SecretsManager();
const res = await sm.getSecretValue({ SecretId: "prod/db/credentials" });
const creds = JSON.parse(res.SecretString);Caching Secrets
Calling Secrets Manager on every invocation adds latency and cost. Fetch once outside the handler so the value is reused across warm invocations.
let cached;
async function getCreds() {
if (!cached) {
const r = await sm.getSecretValue({ SecretId: "prod/db/credentials" });
cached = JSON.parse(r.SecretString);
}
return cached;
}Automatic Rotation
Secrets Manager can rotate credentials on a schedule using a rotation Lambda. For supported databases (RDS), AWS provides a ready-made rotation function so passwords change without code edits.
Secrets vs Parameter Store
SSM Parameter Store also stores config and SecureString values, and is cheaper. Use Parameter Store for plain config; use Secrets Manager when you need built-in rotation and cross-account sharing.
Encryption with KMS
Every secret is encrypted with a KMS key. Use the default AWS-managed key for simplicity, or a customer-managed key (CMK) for fine-grained access control and audit.
Auditing Access
Every GetSecretValue call is logged to CloudTrail. Review these logs to detect unexpected access and prove compliance.
Best Practices
Keep secrets safe:
- Never log the secret value
- Scope IAM to the exact secret ARN
- Enable rotation for long-lived credentials
- Cache across warm invocations, not in source control
Quick Check
Test your Secrets Manager knowledge.
Recap
You learned to secure credentials:
- Store secrets in Secrets Manager, never in code
- Grant least-privilege IAM to the exact ARN
- Fetch with the SDK and cache across warm invocations
- Enable automatic rotation and audit via CloudTrail
Часто задаваемые вопросы
Урок «Защита секретов с помощью AWS Secrets Manager» бесплатный?
Да — полный текст урока «Защита секретов с помощью AWS Secrets Manager» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Serverless Backend with AWS Lambda & API Gateway, подпишись на CoddyKit PRO. Курс Serverless Backend with AWS Lambda & API Gateway содержит 4 уроков всего.
Чему я научусь в уроке «Защита секретов с помощью AWS Secrets Manager»?
Перестаньте хранить учётные данные непосредственно в коде Lambda. Узнайте, как безопасно хранить, ротировать и получать ключи API и пароли баз данных с помощью AWS Secrets Manager. Ты практикуешь Serverless Backend with AWS Lambda & API Gateway с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Serverless Backend with AWS Lambda & API Gateway?
Предыдущий опыт не требуется. Serverless Backend with AWS Lambda & API Gateway на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Защита секретов с помощью AWS Secrets Manager»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Serverless Backend with AWS Lambda & API Gateway?
Да. Каждый урок Serverless Backend with AWS Lambda & API Gateway включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Роли и разрешения IAM
- Авторизаторы API Gateway
- Защита Lambda с помощью VPC
- Защита секретов с помощью AWS Secrets Manager