Enclave 需要什么
一个名为EnclaveScanner、具有只读权限的跨账号 IAM 角色。CloudFormation 模板会为你创建它。该角色的信任策略只允许 Enclave 的主体代入它,并且只能使用为你组织生成的外部 ID。
该角色的 EnclaveScannerReadOnly 策略允许对以下服务执行 Describe、List 和 Get 操作:
- 计算:EC2、ECS、EKS、Lambda、Batch 和 Step Functions。
- 网络:通过 EC2 访问的 VPC 资源、Elastic Load Balancing、Route 53、CloudFront 和 API Gateway。
- 数据:RDS、DynamoDB、ElastiCache,以及 SQS 队列、SNS 主题、Kinesis 流和 MSK 集群的名称。
- 存储:S3 存储桶配置、策略、ACL 和公共访问设置。不读取对象。
- 容器:ECR 仓库。
- 身份:IAM 角色、用户、组、实例配置文件及其策略。
开始之前
- 你需要拥有 Enclave 中的 Owner 或 Admin 角色。
- 在 AWS 中,你需要在要连接的账号中拥有创建 CloudFormation 堆栈和 IAM 角色的权限。
连接 AWS 账号
打开 Settings → Integrations,点击 Amazon Web Services 旁边的 Connect。1
打开 CloudFormation
点击 Open CloudFormation。AWS 会在
us-east-1 中打开 EnclaveScanner 堆栈的快速创建页面,并预先填好你组织的外部 ID 和 Enclave 的主体 ARN。检查堆栈后创建它。如需让其他人运行,请点击 Copy link 并将链接发送给对方。2
从 Outputs 复制 RoleArn
堆栈完成后,打开 CloudFormation → Stacks → EnclaveScanner → Outputs。复制 Key 为
RoleArn 那一行的 Value。3
验证角色
将 ARN 粘贴到 RoleArn output 中,然后点击 Validate role。Enclave 会代入该角色,确认信任关系正常工作。成功后,账号即已连接,Enclave 会开始扫描它。
添加更多账号
你可以连接多个 AWS 账号,例如prod 和 staging。点击 Add account,在另一个账号中启动 EnclaveScanner 堆栈,然后验证其 RoleArn。
每个已连接的账号都对整个组织可用。
管理连接
在 Settings → Integrations → Amazon Web Services 中,点击某个账号可查看其账号 ID、角色 ARN 和区域。- Re-validate 会检查 Enclave 是否仍能代入该角色。
- Delete 会从连接中移除一个账号。
- Disconnect AWS 会移除整个连接。Enclave 将停止使用这些账号。
EnclaveScanner 堆栈或该角色。Enclave 将无法再扫描该账号。
Enclave 会做什么、不会做什么
- 会:调用
EnclaveScannerReadOnly策略中的只读操作。 - 不会:变更任何内容、读取数据内容、持有长期凭证,或在你的账号内运行智能体。
故障排除
- AWS STS could not assume the role:堆栈不存在,或其外部 ID 与此 Enclave 连接不匹配。请再次点击 Open CloudFormation。如果
EnclaveScanner堆栈已被删除,请重新创建;如果它仍存在,请更新它。然后复制新的RoleArn并重新验证。 - “That ARN is the Enclave principal”:你粘贴的是 Enclave 的主体 ARN,而不是你的角色 ARN。请粘贴堆栈 Outputs 标签页中的
RoleArn值。 - 资产没有出现在 Coverage 中:Enclave 会在账号连接时扫描一次,之后每天扫描一次。如需立即扫描,请在 Coverage 中点击 Analyze Environment。