
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://travis-ci.org/codahale/sneaker.svg?branch=master](https://travis-ci.org/codahale/sneaker) http://img.shields.io/badge/license-Apache%20V2-blue.svg](https://github.com/codahale/sneaker/blob/master/LICENSE)
Setec Astronomy? Keynote Shogun.
sneaker 是一个在 AWS 上存储敏感信息的工具,利用 S3 和密钥管理服务 (KMS) 提供持久性、机密性和完整性。
密钥存储在 S3 中,使用 AES-256-GCM 加密,并通过 KMS 生成的一次性数据密钥进行保护。
本项目尚未经过安全专家审核。其内部实现、数据格式和接口未来可能随时更改,恕不另行通知。
shellcd cmd/sneaker go build
sneaker 需要访问 AWS API,因此需要一组 AWS 凭证。它会依次查找 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 环境变量、默认凭证配置文件(如 ~/.aws/credentials),最后是 EC2 实例上的实例配置文件凭证。
通常,如果 aws 命令可用,sneaker 也应能正常工作。
如果您的 AWS 账户启用了多因素认证(强烈建议启用),可能需要通过 AWS_SESSION_TOKEN 环境变量提供令牌。
如果使用 IAM 实例角色,可能需要设置 AWS_REGION 环境变量指定使用的 AWS 区域(如 us-east-1)。
Sneaker 需要两个组件:一个 KMS 主密钥和一个 S3 存储桶。
您可以通过 AWS 控制台或最新版本的 aws 命令创建 KMS 密钥。创建后,将其 ID(UUID 格式)存储在 SNEAKER_MASTER_KEY 环境变量中:
shellexport SNEAKER_MASTER_KEY="9ed356fb-5f0f-4792-983d-91866faa3705"
与密钥类似,您可以通过 AWS 控制台或 aws 命令创建 S3 存储桶。您可以使用专用存储桶或公共存储桶中的目录,但建议执行以下两项操作:
使用 Private ACL。除了 sneaker 的加密控制外,访问控制对于防止安全漏洞至关重要。
启用访问日志记录,理想情况下记录到严格控制的安全存储桶中。尽管 Amazon 的 CloudTrail 为绝大多数 AWS 服务提供审计日志,但不包括 S3 访问。
完成后,设置 SNEAKER_S3_PATH 环境变量指定存储密钥的位置(如 s3://bucket1/secrets/):
shellexport SNEAKER_S3_PATH="s3://bucket1/secrets/"
(这会将加密的密钥存储在 bucket1 存储桶中,前缀为 secrets/。)
配置完成后,尝试列出密钥:
shellsneaker ls
这将打印所有已上传密钥的表格。由于尚未上传任何内容,表格将为空。
创建示例密钥文件并上传:
shellecho "This is a secret!" > secret.txt sneaker upload secret.txt example/secret.txt
此命令将使用 KMS 生成随机的 256 位数据密钥,用 AES-256-GCM 加密密钥,并将加密的密钥和 KMS 生成的加密数据密钥上传到 S3。运行 sneaker ls 应显示包含该文件的表格。
如果文件非常敏感,不应存储在磁盘上,可用 - 代替文件名,使 sneaker 从 STDIN 读取数据。
下载单个文件:
shellsneaker download example/secret.txt secret.txt
也可将多个文件下载到单个文件夹:
shellsneaker gather "example/*.txt,other/*.txt" output-dir/
删除文件:
shellsneaker rm example/secret.txt
要在机器上安装密钥,需将其打包成 tarball:
shellsneaker pack example/*,extra.txt example.tar.enc
此命令执行以下步骤:
下载并解密所有匹配模式 example/* 或 extra.txt 的密钥。
将所有解密的密钥打包到内存中的 TAR 文件。
使用 KMS 生成新数据密钥。
使用数据密钥通过 AES-GCM 加密 TAR 文件。
将加密的数据密钥和加密的 TAR 文件写入 example.tar.enc。
使用 - 作为输出路径将使 sneaker 将数据写入 STDOUT。
结果可安全存储和传输——只有有权限执行 KMS 密钥 Decrypt 操作的用户才能解密数据。
打包时可使用 --key-id 标志指定不同于 SNEAKER_MASTER_KEY 的 KMS 密钥:
shellsneaker pack example/* example.tar.enc --key-id=deb207cd-d3a7-4777-aca0-01fbceb4c927
这允许在无法访问存储密钥所用密钥的环境中解包密钥。
解包密钥运行以下命令:
shellsneaker unpack example.tar.enc example.tar
此命令执行以下步骤:
读取 example.tar.enc。
提取加密的数据密钥和加密的 TAR 文件。
使用 KMS 解密数据密钥。
解密 TAR 文件并将结果写入 example.tar。
使用 - 代替文件名将使 sneaker 从 STDIN 读取数据。同样,使用 - 作为输出路径将使 sneaker 将数据写入 STDOUT,例如可直接通过管道传输到 tar 进程。
KMS 支持http://docs.aws.amazon.com/kms/latest/developerguide/encrypt-context.html%E6%A6%82%E5%BF%B5%EF%BC%9A%E7%94%A8%E4%BA%8E%E5%8A%A0%E5%AF%86%E7%9A%84%E5%8D%8A%E7%BB%93%E6%9E%84%E5%8C%96%E6%95%B0%E6%8D%AE%EF%BC%8C%E8%A7%A3%E5%AF%86%E6%97%B6%E5%BF%85%E9%A1%BB%E6%8F%90%E4%BE%9B%E7%9B%B8%E5%90%8C%E7%9A%84%E6%95%B0%E6%8D%AE%E3%80%82
sneaker 使用 SNEAKER_MASTER_CONTEXT 环境变量作为存储在 S3 中的密钥的默认加密上下文。此外,sneaker 还包含完整的 S3 路径(包括存储桶和前缀)。因此,S3 中的密钥不能重命名,只能删除并重新上传。
注意: 目前无法直接修改 SNEAKER_MASTER_CONTEXT 的内容。如需更改,需下载所有密钥并使用新上下文重新上传。
打包和解包密钥时,可通过命令行指定不同的加密上下文:
shellsneaker pack example/* secrets.tar.enc --context="hostname=web1.example.com,version=20"
解包时必须使用相同的上下文(hostname=web1.example.com,version=20):
shellsneaker unpack secrets.tar.enc secrets.tar --context="hostname=web1.example.com,version=20"
加密上下文中的所有数据通过 CloudTrail 记录,可跟踪特定密钥的打包和解包时间与位置。
常见的维护任务是密钥轮换。要轮换用于加密密钥的数据密钥,运行 sneaker rotate。它将下载并解密每个密钥,生成新数据密钥,并上传重新加密的副本。
要轮换用于每个密钥的 KMS 密钥,只需指定不同的 SNEAKER_MASTER_KEY 并运行 sneaker rotate。
所有数据使用随机 KMS 数据密钥和随机 nonce 通过 AES-256-GCM 加密。KMS 密钥的 ID 用作已认证数据。
最终结果由以下部分连接而成:
四字节头部:加密的 KMS 数据密钥长度(字节数),网络字节顺序。
加密的 KMS 数据密钥(原始格式,包含密钥 ID 的 Amazon 不透明格式)。
密钥的 AES-256-GCM 密文和标签。
!https://raw.githubusercontent.com/codahale/sneaker/master/architecture.png
威胁模型根据不同***者可能实现的目标定义。此列表旨在全面覆盖——如果某个实体能执行未列出的操作,则视为 Sneaker 存在安全漏洞。
总体而言,使用 Sneaker 存储的内容的机密性和完整性取决于 Sneaker 的完整性、KMS 的机密性和完整性,以及 S3 的完整性。
用户必须采取合理行动并维护自身利益,不得泄露密钥或允许未授权访问密钥。
用户必须运行未被篡改的 Sneaker 副本。
用户的计算机必须正常运行,未被***感染。
与 Amazon 的通信通过 TLS 确保机密性和完整性。
密钥管理服务 (KMS) 足够安全:其密钥不会泄露,随机数对***者不可预测,加密算法正确。
KMS 和 S3 的认证与访问控制功能安全。
AES-256 和 GCM 的安全保证有效。
泄露 KMS 的***者可:
创建伪造的密钥包。
解包打包的 tarball。
暂时或永久阻止解密密钥。
泄露 S3 的***者可:
物理夺取用户计算机(或泄露用户备份)或通过其他方式泄露计算机的***者可:
https://travis-ci.org/codahale/sneaker.svg?branch=master](https://travis-ci.org/codahale/sneaker) http://img.shields.io/badge/license-Apache%20V2-blue.svg](https://github.com/codahale/sneaker/blob/master/LICENSE)
Setec Astronomy? Keynote Shogun.
sneaker 是一个在 AWS 上存储敏感信息的工具,利用 S3 和密钥管理服务 (KMS) 提供持久性、机密性和完整性。
密钥存储在 S3 中,使用 AES-256-GCM 加密,并通过 KMS 生成的一次性数据密钥进行保护。
本项目尚未经过安全专家审核。其内部实现、数据格式和接口未来可能随时更改,恕不另行通知。
shellcd cmd/sneaker go build
sneaker 需要访问 AWS API,因此需要一组 AWS 凭证。它会依次查找 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 环境变量、默认凭证配置文件(如 ~/.aws/credentials),最后是 EC2 实例上的实例配置文件凭证。
通常,如果 aws 命令可用,sneaker 也应能正常工作。
如果您的 AWS 账户启用了多因素认证(强烈建议启用),可能需要通过 AWS_SESSION_TOKEN 环境变量提供令牌。
如果使用 IAM 实例角色,可能需要设置 AWS_REGION 环境变量指定使用的 AWS 区域(如 us-east-1)。
Sneaker 需要两个组件:一个 KMS 主密钥和一个 S3 存储桶。
您可以通过 AWS 控制台或最新版本的 aws 命令创建 KMS 密钥。创建后,将其 ID(UUID 格式)存储在 SNEAKER_MASTER_KEY 环境变量中:
shellexport SNEAKER_MASTER_KEY="9ed356fb-5f0f-4792-983d-91866faa3705"
与密钥类似,您可以通过 AWS 控制台或 aws 命令创建 S3 存储桶。您可以使用专用存储桶或公共存储桶中的目录,但建议执行以下两项操作:
使用 Private ACL。除了 sneaker 的加密控制外,访问控制对于防止安全漏洞至关重要。
启用访问日志记录,理想情况下记录到严格控制的安全存储桶中。尽管 Amazon 的 CloudTrail 为绝大多数 AWS 服务提供审计日志,但不包括 S3 访问。
完成后,设置 SNEAKER_S3_PATH 环境变量指定存储密钥的位置(如 s3://bucket1/secrets/):
shellexport SNEAKER_S3_PATH="s3://bucket1/secrets/"
(这会将加密的密钥存储在 bucket1 存储桶中,前缀为 secrets/。)
配置完成后,尝试列出密钥:
shellsneaker ls
这将打印所有已上传密钥的表格。由于尚未上传任何内容,表格将为空。
创建示例密钥文件并上传:
shellecho "This is a secret!" > secret.txt sneaker upload secret.txt example/secret.txt
此命令将使用 KMS 生成随机的 256 位数据密钥,用 AES-256-GCM 加密密钥,并将加密的密钥和 KMS 生成的加密数据密钥上传到 S3。运行 sneaker ls 应显示包含该文件的表格。
如果文件非常敏感,不应存储在磁盘上,可用 - 代替文件名,使 sneaker 从 STDIN 读取数据。
下载单个文件:
shellsneaker download example/secret.txt secret.txt
也可将多个文件下载到单个文件夹:
shellsneaker gather "example/*.txt,other/*.txt" output-dir/
删除文件:
shellsneaker rm example/secret.txt
要在机器上安装密钥,需将其打包成 tarball:
shellsneaker pack example/*,extra.txt example.tar.enc
此命令执行以下步骤:
下载并解密所有匹配模式 example/* 或 extra.txt 的密钥。
将所有解密的密钥打包到内存中的 TAR 文件。
使用 KMS 生成新数据密钥。
使用数据密钥通过 AES-GCM 加密 TAR 文件。
将加密的数据密钥和加密的 TAR 文件写入 example.tar.enc。
使用 - 作为输出路径将使 sneaker 将数据写入 STDOUT。
结果可安全存储和传输——只有有权限执行 KMS 密钥 Decrypt 操作的用户才能解密数据。
打包时可使用 --key-id 标志指定不同于 SNEAKER_MASTER_KEY 的 KMS 密钥:
shellsneaker pack example/* example.tar.enc --key-id=deb207cd-d3a7-4777-aca0-01fbceb4c927
这允许在无法访问存储密钥所用密钥的环境中解包密钥。
解包密钥运行以下命令:
shellsneaker unpack example
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务