Amazon VPC Lattice 管理
监视、限制和删除对子图的访问
本指南涵盖了以下内容
- 如何监控通过Amazon VPC Lattice流向您的子图的流量。
- 如何为您的子图添加访问限制。
- 如何移除GraphOS对您的子图的访问权限。
💡 提示
如果您尚未配置Amazon VPC Lattice或需要添加新的子图,请按照配置指南进行操作。
Amazon VPC Lattice监控
为了确认流量是否流向您的私有子图,您可以使用Amazon VPC Lattice生成的指标和访问日志:
- 登录到您选择的AWS控制台区域,并前往VPC服务页面。
- 在左侧导航中向下滚动并打开VPC Lattice > 服务。
- 单击相关子图使用的Lattice服务。
- 单击监控选项卡。
从那里,您可以为Amazon VPC Lattice服务配置和启用访问日志。
使用指标选项卡可以快速查看流向您的私有子图的流量。
您还可以使用Amazon VPC Lattice生成的Amazon CloudWatch指标设置仪表板和警报,以了解您的私有子图的健康状况。
进一步限制访问
一旦配置Amazon VPC Lattice服务以接受GraphOS的流量,它就被多个安全层所保护:
- Amazon VPC Lattice服务网络仅允许通过HTTPS拥有有效签名的流量。
- Lattice服务的配置授权策略仅允许从Apollo AWS账户的流量。 (这是在创建Lattice服务时步骤6配置的授权策略 。
- GraphOS云路由器配置比较超图中的子图配置与Apollo账户中已知私有子图的列表。它拒绝创建或更新包含未知私有子图的云路由器。
- 云路由器只能调用其超图配置中列出的私有子图。
您还可以通过配置服务授权策略中的附加条件来进一步限制对您的私有子图的访问。具体来说,您可以添加条件来限制基于您组织的Apollo账户ID或您的图引用的流量。
更新Lattice服务授权策略
要更新Lattice服务的授权策略,您首先需要Apollo账户ID和/或图引用,以便限制子图的访问。
获取账户ID和图引用
联系您的Apollo联系人以获取账户ID。指定您需要账户ID来更新Lattice服务的授权策略。
ⓘ 注意事项
您在授权策略中指定的Apollo账户ID不是您在GraphOS Studio中可以找到的GraphOS组织ID。
您可以在Apollo账户中找到您的超图的图引用:
- 登录到GraphOS Studio。
- 在Graph页面上的图变体上点击。图引用位于页面顶部。
如果您想向多个超图或GraphOS账户提供子图访问,请在更新策略时指定多个图引用和账户ID。
更新策略
如果您正在使用 Apollo Terraform 模块,您可以设置 apollo_account_ids
和 apollo_graph_refs
变量 以更新您的授权策略。请提供一些 Apollo 账户 ID 或 graph refs:
apollo_account_ids = ["my_account_id", "another_account_id"]apollo_graph_refs = ["my-graph@my-variant", "another-graph@my-variant"]
如果您没有使用 Apollo Terraform 模块,请按照以下步骤操作
- 在您选择的 AWS 控制台中,前往 VPC 服务页面
- 在左侧导航中向下滚动,并在 服务 部分中打开 VPC Lattice 部分。
- 点击您想要配置授权策略的 Lattice 服务。
- 在 服务访问 部分,更新您的授权策略。您可以使用以下内容作为示例——确保用您自己的账户 ID 和 graph ref 替换。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": "*","Action": "vpc-lattice-svcs:Invoke","Resource": "*","Condition": {"ForAnyValue:StringLike": {"aws:PrincipalOrgPaths": "o-9vaxczew6u/*/ou-leyb-l9pccq2t/ou-leyb-fvqz35yo/*"},// Restrict traffic based on Apollo account IDs or graphRefs"StringEquals": {"aws:PrincipalTag/Apollo:accountId": "my_account_id_xezf34","aws:PrincipalTag/Apollo:graphRef": "my-graph@my-variant"}}}]}
如果多个 supergraphs 应该可以访问 subgraph,请使用逗号分隔的 graph refs 字符串作为 aws:PrincipalTag/Apollo:graphRef
。例如:
"aws:PrincipalTag/Apollo:graphRef": "my-graph@my-variant, my-graph@another-variant, another-graph@another-variant"
类似地,您可以使用逗号分隔的账户ID作为 aws:PrincipalTag/Apollo:accountId
:
"aws:PrincipalTag/Apollo:accountId": "my_account_id_xezf34", "my_account_id_dehs56"
移除访问权限
为了移除 GraphOS 对私有子图的访问权限,您必须移除资源共享和服务网络关联。请注意,一旦移除访问权限,任何现有的 supergraphs 发送到您的私有子图的流量将停止工作。
移除资源共享
- 在您选择的区域的 AWS 控制台中,转到资源访问管理器服务页面
- 在左侧导航中,点击 资源共享 中的 由我所共享 部分。
- 选择与 Apollo AWS 组织关联的资源共享。然后点击右上角的 删除 按钮。
- 在出现的对话框中,点击 删除。
移除服务网络关联
- 在您选择的 AWS 控制台中,前往 VPC 服务页面
- 在左侧导航中向下滚动,并在 服务 部分中打开 VPC Lattice 部分。
- 点击您要断开连接的 Lattice 服务。
- 在 服务网络关联 中,选择 graphos-cloud 服务名称。
- 点击该部分右上角的 操作 按钮。然后,点击 删除网络关联。
- 按照确认说明操作,并点击 删除。
删除网络关联可能需要几秒钟的时间。一旦删除了网络关联, GraphOS 将无法再联系您的子图。