Floci多账户隔离:如何在本地模拟多个AWS账户

Floci多账户隔离:如何在本地模拟多个AWS账户 Floci多账户隔离如何在本地模拟多个AWS账户【免费下载链接】flociLight, fluffy, and always free - The AWS Local Emulator alternative项目地址: https://gitcode.com/gh_mirrors/fl/flociFloci作为一款轻量级AWS本地模拟器提供了强大的多账户隔离功能让开发者能够在本地环境中轻松模拟多个AWS账户实现资源的完全隔离。这一特性对于测试跨账户访问、权限控制以及多租户应用开发至关重要。Floci多账户隔离功能示意图展示了不同账户间资源的独立存储与访问多账户隔离的核心原理Floci的多账户隔离机制基于一个简单而高效的规则当请求中的Access Key IDAKID是12位数字时它将被直接用作账户ID。任何其他格式的密钥如AKIAIOSFODNN7EXAMPLE则会回退到默认账户ID。这一机制的工作流程如下Floci从AWS SigV4Authorization头中读取Access Key ID检查AKID是否为12位数字格式确定账户ID后所有存储读写操作都会自动以该账户ID为命名空间例如当使用AKID为111111111111的凭证时创建的SQS队列orders将被存储为111111111111/orders与其他账户下的同名队列完全隔离。单账户默认行为如果不特别配置多账户Floci将使用默认账户IDFLOCI_DEFAULT_ACCOUNT_ID000000000000 # 默认值所有资源的ARN和URL都将使用此默认账户IDarn:aws:sqs:us-east-1:000000000000:my-queue http://localhost:4566/000000000000/my-queue你可以通过环境变量修改默认账户IDFLOCI_DEFAULT_ACCOUNT_ID123456789012启用多账户隔离的简单步骤启用Floci的多账户隔离功能非常简单只需使用12位数字的访问密钥ID即可。秘密访问密钥可以是任何非空字符串Floci默认不验证签名。使用AWS CLI配置多账户# 配置两个命名配置文件 aws configure --profile account-a # AWS Access Key ID: 111111111111 # AWS Secret Access Key: test aws configure --profile account-b # AWS Access Key ID: 222222222222 # AWS Secret Access Key: test export AWS_ENDPOINT_URLhttp://localhost:4566 # 在两个账户下创建相同名称的队列 aws sqs create-queue --queue-name orders --profile account-a aws sqs create-queue --queue-name orders --profile account-b # 每个账户只能看到自己的队列 aws sqs list-queues --profile account-a # → .../111111111111/orders aws sqs list-queues --profile account-b # → .../222222222222/ordersAWS SDK示例Pythonimport boto3 def client(service, account_id): return boto3.client( service, endpoint_urlhttp://localhost:4566, region_nameus-east-1, aws_access_key_idaccount_id, # 12位数字 → 账户ID aws_secret_access_keytest, ) sqs_a client(sqs, 111111111111) sqs_b client(sqs, 222222222222) sqs_a.create_queue(QueueNameorders) sqs_b.create_queue(QueueNameorders) print(sqs_a.list_queues()[QueueUrls]) # [.../111111111111/orders] print(sqs_b.list_queues()[QueueUrls]) # [.../222222222222/orders]多账户环境下的ARN生成Floci会在生成的每个ARN中嵌入正确的账户ID确保资源标识的准确性arn:aws:sqs:us-east-1:111111111111:orders arn:aws:lambda:us-east-1:222222222222:function:my-fn arn:aws:s3:::my-bucket # S3 ARNs与账户无关隔离范围与数据安全所有使用StorageFactory的服务都自动参与账户隔离包括SQS、SNS、S3、DynamoDB、Lambda、SSM、Secrets Manager等几乎所有Floci支持的服务。后台工作进程如Lambda事件源轮询器、DynamoDB TTL清理器会在内部跨所有账户迭代并将写入路由回原始账户确保不会通过异步路径发生跨账户数据泄漏。签名验证与安全配置默认情况下Floci不验证SigV4签名只通过访问密钥ID进行账户解析。如需启用真实签名验证可设置FLOCI_AUTH_VALIDATE_SIGNATUREStrue FLOCI_AUTH_PRESIGN_SECRETyour-secret # 用于预签名URL验证即使禁用签名验证账户隔离仍然能正常工作因为AKID会从Authorization头中提取与签名是否验证无关。多账户数据持久化当使用persistent、hybrid或wal存储模式时存储键会在持久化层按账户命名空间划分。重启Floci后每个账户的资源会独立恢复不会相互影响。多账户配置参考变量默认值描述FLOCI_DEFAULT_ACCOUNT_ID000000000000当AKID不是12位数字时使用的账户IDFLOCI_DEFAULT_REGIONus-east-1无法从Authorization头推导时使用的区域FLOCI_AUTH_VALIDATE_SIGNATURESfalse是否启用SigV4签名验证通过Floci的多账户隔离功能开发者可以在本地环境中轻松构建复杂的多账户AWS架构测试而无需担心资源冲突或数据泄漏。这一功能完全兼容LocalStack的多账户行为使现有测试设置可以无缝迁移。详细配置指南请参见docs/configuration/multi-account.md。【免费下载链接】flociLight, fluffy, and always free - The AWS Local Emulator alternative项目地址: https://gitcode.com/gh_mirrors/fl/floci创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考