К основному содержанию
скилл CX Codex

securing-s3-buckets — скилл для Claude Code: защита бакетов S3

Скилл проводит агента по пяти сценариям работы с S3: создание защищённого бакета, аудит, исправление находок, шифрование и мониторинг.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add aws/agent-toolkit-for-aws --skill securing-s3-buckets -a claude-code
Открыть на GitHub

Что делает securing-s3-buckets

Скилл описывает пять рабочих процессов. Первый создаёт новый бакет по шагам: --bucket-namespace account-regional, версионирование, шифрование SSE-S3 с Bucket Keys, политика DenyInsecureTransport, ABAC. Остальные четыре — аудит существующего бакета только read-only командами, починка конкретной находки, настройка шифрования и включение логирования с мониторингом.

Команды скилл выполняет через AWS MCP-сервер, если тот подключён, иначе через AWS CLI или оболочку. Перед записью агент обязан показать команду и дождаться подтверждения, а перед изменением политики — выгрузить текущую через aws s3api get-bucket-policy и сохранить в файл, потому что put-bucket-policy затирает политику целиком. Новые утверждения нужно вливать в существующий массив Statement.

Для работы нужны настроенные учётные данные AWS: скилл проверяет их через aws sts get-caller-identity и сообщает, если чего-то не хватает. По шифрованию по умолчанию берётся SSE-S3 с блокировкой SSE-C; если вы просите KMS, ключ должен быть customer managed и задан полным ARN, а не алиасом. S3 API молча примет aws/s3 или алиас, так что после применения стоит проверить результат через get-bucket-encryption.

Какие задачи решает

  • создать новый бакет S3 сразу с версионированием и шифрованием
  • провести аудит существующего бакета и получить отчёт PASS/FAIL по каждому контролю
  • починить конкретную находку и перепроверить её после исправления
  • запретить доступ к бакету по HTTP через политику DenyInsecureTransport
  • включить логирование и мониторинг, не создавая второй детектор GuardDuty

Примеры запросов агенту

  • защити новый бакет S3 в регионе eu-west-1
  • проведи аудит бакета my-logs и покажи, что не настроено
  • настрой шифрование для бакета my-data через customer managed KMS-ключ

Как установить securing-s3-buckets

1Через Skills CLI (Vercel)

npx skills add aws/agent-toolkit-for-aws --skill securing-s3-buckets -a claude-code

2Вручную: положить файлы

~/.claude/skills/securing-s3-buckets/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/securing-s3-buckets/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора133

amazon-bedrock Скилл помогает настраивать Amazon Bedrock, от вызовов Converse API и RAG в Knowledge Bases до развёртывания агентов в AgentCore Harness. CX Codex +1 8 500установок aws-messaging-and-streaming Помогает агенту выбрать, чем двигать данные в AWS: очередью, шиной событий или журналом. Полезно до того, как вы зафиксируете SQS или Kinesis. CX Codex +1 8 100установок aws-sdk-js-v3-usage Задаёт правила и паттерны работы с AWS SDK v3 в коде на JavaScript и TypeScript. Помогает писать вызовы сервисов AWS без устаревшего синтаксиса v2. CX Codex +1 8 000установок aws-sdk-python-usage Скилл задаёт правила кодинга на Python с библиотеками boto3 и botocore. Он подсказывает агенту, когда брать client или resource, как настраивать пагинацию и перехватывать ошибки AWS. CX Codex +1 7 800установок connecting-to-data-source Создаёт подключение AWS Glue к внешней базе — Oracle, PostgreSQL, Redshift, Snowflake или BigQuery — и проверяет его тестом перед передачей в работу. CX Codex +1 6 800установок creating-secrets-using-best-practices Ведёт агента по созданию секрета в AWS Secrets Manager: отдельный ключ KMS, узкие права IAM, ротация и аудит. Пригодится, когда секрет идёт в прод. CX Codex +1 6 700установок storing-and-querying-vectors Скилл ведёт агента по работе с Amazon S3 Vectors: создание векторного бакета и индекса, запись эмбеддингов, поиск похожих. CX Codex +1 6 600установок querying-data-lake Скилл запускает SQL в Amazon Athena: выбирает рабочую группу, останавливает разрушительные запросы на подтверждение и показывает цену прогона. CX Codex +1 6 600установок

Похожие

aws-iam devops-skills Скилл для работы с AWS IAM: помогает писать политики, создавать роли и настраивать доступ по принципу least-privilege прямо из агента. CX Codex +1 333установок aws-penetration-testing zebbern Скилл ведёт агента по пентесту AWS: перечисление IAM, повышение привилегий, SSRF к metadata, разбор S3 и Lambda. CX Codex +1 ★ 4 676звёзд репо aws-cloudtrail devops-skills Настраивает аудит CloudTrail во всех аккаунтах AWS организации и создаёт алерты на опасные события. Пригодится при подготовке к аудиту безопасности. CX Codex +1 340установок iac-terraform-data-engineering reason-machines Скилл для Claude и других ИИ-агентов: помогает описывать инфраструктуру AWS под данные в Terraform — бакеты S3, инстансы EC2, роли IAM. CX Codex +1 1 800установок iac-data-engineering-terraform reason-machines Скилл с готовыми шаблонами Terraform для дата-инженерии: бакеты S3, инстансы EC2 и роли IAM. Пригодится, когда нужно поднять инфраструктуру под пайплайны декларативно. CX Codex +1 1 800установок mastering-aws-cli Spillwave Скилл-справочник по AWS CLI v2: команды для Lambda, ECS, EKS, S3, DynamoDB, IAM и туннелей через SSM. Пригодится, когда агент пишет aws-команды или разбирается с доступом. CX Codex +1 2 400установок

Рядом в теме «Безопасность»

Всё по теме «Безопасность» →

Вопросы о securing-s3-buckets

Как установить securing-s3-buckets в Claude?

Выполните npx skills add aws/agent-toolkit-for-aws --skill securing-s3-buckets -a claude-code. Скилл появится в ~/.claude/skills/securing-s3-buckets/SKILL.md.

Что делает securing-s3-buckets?

Ведёт агента по пяти сценариям: создание защищённого бакета, аудит существующего, исправление находки, настройка шифрования и включение логирования с мониторингом. Внутри — пошаговые команды AWS CLI и правила безопасности для put-bucket-policy.

Нужны ли для скилла учётные данные AWS?

Да. Скилл проверяет их через aws sts get-caller-identity и сообщает, если нужных инструментов или доступа нет. Команды идут через AWS MCP-сервер, если он подключён, иначе через AWS CLI.

Исходный текст

SKILL.md · Apache-2.0
---
name: securing-s3-buckets
description: >
  Create and secure S3 buckets following AWS best practices for access control, encryption,
  monitoring, and remediation of misconfigurations. Use when the user wants to
  secure a new bucket, audit an existing bucket, fix a security finding, configure
  encryption, or enable logging and monitoring. Do NOT use for general S3 data
  operations, S3 Tables setup, or discovering existing data assets.
version: 1
---

## Overview

Implements layered S3 security controls across five workflows: securing new buckets,
auditing existing configurations, remediating findings, configuring encryption, and
enabling monitoring. Follows AWS Well-Architected security best practices.

Execute commands using the AWS MCP server when connected (sandboxed execution, audit logging, observability). Fall back to AWS CLI or shell otherwise.

## Common Tasks

### 0. Verify Dependencies

Check for required tools before starting.

**Constraints:**

- You MUST inform the user if required tools are missing
- You SHOULD confirm credentials with `aws sts get-caller-identity`

See [references/iam-permissions.md](references/iam-permissions.md) for IAM permissions by workflow.

### 1. Classify the Request

| User intent | Workflow |
|---|---|
| Secure a new bucket | A: Secure New Bucket |
| Audit / review existing bucket | B: Audit Existing Bucket |
| Fix a specific finding | C: Remediate Issue |
| Configure encryption | D: Configure Encryption |
| Enable logging / monitoring | E: Enable Monitoring |

**Constraints:**

- You MUST ask for all required parameters upfront
- You MUST confirm bucket name and region before any write operation
- You MAY infer region from user context if clearly stated
- You SHOULD run `aws iam simulate-principal-policy` to validate permissions before write operations
- You SHOULD display write commands and wait for confirmation before executing

### put-bucket-policy Safety Rules

These rules apply to ALL workflows that call `put-bucket-policy`:

- You MUST attempt to retrieve the existing policy first (`aws s3api get-bucket-policy`) — `put-bucket-policy` replaces the entire policy
- If a policy exists, you MUST back it up before modifying: `aws s3api get-bucket-policy --bucket <name> --output text > backup-policy-$(date +%s).json`
- If `NoSuchBucketPolicy` is returned, proceed with a new policy — no backup is needed
- You MUST merge new statements into the existing policy's Statement array (if one exists)
- You MUST validate merged JSON syntax before applying (e.g. `echo '<policy>' | python3 -m json.tool`)
- You SHOULD display the full `put-bucket-policy` command and wait for confirmation

### 2. Workflow A — Secure New Bucket

See [references/workflows.md](references/workflows.md) for full CLI steps.

**Required steps (execute in order, do not skip):**

1. Create bucket with `--bucket-namespace account-regional`
2. Enable versioning
3. Enable encryption (SSE-S3 + Bucket Keys + block SSE-C)
4. Enable logging (ask user which option — conditional)
5. Enforce HTTPS-only via `DenyInsecureTransport` bucket policy
6. Enable ABAC

**Constraints:**

- You MUST pass `--bucket-namespace account-regional` on `create-bucket` call — this is REQUIRED, not optional. Example:

  ```
  aws s3api create-bucket --bucket <name> --bucket-namespace account-regional --region <region>
  ```

- You MUST NOT change Block Public Access — S3 enables it by default on new buckets
- You MUST NOT change ACL ownership controls — S3 disables ACLs (`BucketOwnerEnforced`) by default
- You MUST apply a bucket policy with a `DenyInsecureTransport` statement that denies `s3:*` when `aws:SecureTransport` is `false` — this is REQUIRED, not optional. Example:

  ```
  aws s3api put-bucket-policy --bucket <name> --policy '{"Version":"2012-10-17","Statement":[{"Sid":"DenyInsecureTransport","Effect":"Deny","Principal":"*","Action":"s3:*","Resource":["arn:aws:s3:::<name>/*","arn:aws:s3:::<name>"],"Condition":{"Bool":{"aws:SecureTransport":"false"}}}]}'
  ```

- You MUST ask the user which logging option they want before step 4
- You MUST follow the [put-bucket-policy safety rules](#put-bucket-policy-safety-rules) for steps 4 and 5
- You SHOULD confirm each step succeeded before proceeding

### 3. Workflow B — Audit Existing Bucket

See [references/audit-checklist.md](references/audit-checklist.md) for the full checklist.

**Constraints:**

- You MUST run all read-only audit commands before reporting findings
- You MUST NOT execute any write or modify commands during an audit
- You MUST report each control as PASS / FAIL / NOT CONFIGURED with severity
- For logging: report PASS if either S3 server access logging OR CloudTrail data events are enabled; NOT CONFIGURED only if neither

### 4. Workflow C — Remediate Issue

See [references/remediation.md](references/remediation.md) for fix commands by issue type.

**Constraints:**

- You MUST identify the issue type before applying any fix
- You MUST follow the [put-bucket-policy safety rules](#put-bucket-policy-safety-rules) when modifying policies
- You MUST re-run the relevant audit check after applying the fix to confirm resolution

### 5. Workflow D — Configure Encryption

See [references/encryption.md](references/encryption.md) for encryption options and commands.

**Constraints:**

- You MUST default to SSE-S3 with S3 Bucket Keys and SSE-C blocked unless the user explicitly requests KMS
- When using SSE-KMS, you MUST use a customer managed key — NEVER the AWS managed `aws/s3` key
- You MUST specify customer-managed KMS keys by full ARN, not alias
- You MUST include `BucketKeyEnabled: true` and `BlockedEncryptionTypes: [SSE-C]` in all configurations
- **Note**: The S3 API accepts `aws/s3` and aliases without error — agent-enforced constraints. Verify with `get-bucket-encryption` after applying.

### 6. Workflow E — Enable Monitoring

See [references/workflows.md](references/workflows.md) for full CLI steps.

**Constraints:**

- You MUST check whether a GuardDuty detector already exists before creating one
- You MUST use the trail's home region (not the bucket's region) for CloudTrail commands
- You SHOULD enable all four core recommended AWS Config rules

## Troubleshooting

**`ObjectLockConfigurationNotFoundError`** — Object Lock is not enabled. Treat as NOT CONFIGURED, not a failure.

**`AccessDenied` on audit commands** — Check IAM policy, bucket policy, Block Public Access, VPC endpoint policy, and SCPs/RCPs. Use `aws iam simulate-principal-policy` to diagnose.

**`put-bucket-policy` silently removes existing statements** — See [put-bucket-policy safety rules](#put-bucket-policy-safety-rules).

**GuardDuty `BadRequestException: detector already exists`** — Run `aws guardduty list-detectors` first; only call `create-detector` if empty.

**CloudTrail changes not taking effect** — Verify you are using `--region <trail-home-region>`, not the bucket's region. Find it with `aws cloudtrail describe-trails --query 'trailList[*].[Name,HomeRegion]'`.

## Additional Resources

- [references/iam-permissions.md](references/iam-permissions.md) — IAM permissions by workflow
- [references/audit-checklist.md](references/audit-checklist.md) — Per-control checklist with severity and pass conditions
- [references/encryption.md](references/encryption.md) — Encryption options, KMS guidance, SSE-C blocking
- [references/remediation.md](references/remediation.md) — Fix commands for common findings
- [references/workflows.md](references/workflows.md) — Full CLI command sequences for Workflows A and E
- [AWS S3 Security Best Practices](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)
- [AWS Well-Architected Security Pillar](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html)

© aws · Apache-2.0 · aws/agent-toolkit-for-aws

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой