加入我们,于10月8日至10日在纽约市学习关于 GraphQL Federation 和 API 平台工程的最最新技巧、趋势和新闻。加入我们,参加2024年纽约市 GraphQL Summit
文档
免费开始
1.27.0

子图谱认证

使用 AWS SigV4 实现子图谱认证


支持请求认证和密钥轮换,通过AWS 签名版本 4(SigV4)。

这允许您通过确保子图请求是由发起的,且有效载荷未被篡改,来确保与 AWS 的通信安全。

我们已经对该功能进行了以下服务的测试

  • AWS Lambda URL
  • AWS Appsync
  • AWS Amazon API Gateway
  • VPC Lattice ⚠️ VPC Lattice 不支持 WebSocket,您无法在透传模式下使用订阅。

要使用此功能

要使用此功能,您的 AWS 托管的子图必须配置为 IAM 接受已签名的请求

工作原理

请求使用HTTPAuthorization 标头签名的,有关更多详细信息,请参阅上游文档。

配置示例

以下示例展示了如何为所有子图使用默认凭证链,except for theproducts子图,它使用硬编码的凭证:

router.yaml
authentication:
subgraph:
all: # configuration that will apply to all subgraphs
aws_sig_v4:
default_chain:
profile_name: "my-test-profile" # https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#ec2-instance-profile
region: "us-east-1" # https://docs.aws.amazon.com/general/latest/gr/rande.html
service_name: "lambda" # https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html
assume_role: # https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html
role_arn: "test-arn"
session_name: "test-session"
external_id: "test-id"
subgraphs:
products:
aws_sig_v4:
hardcoded: # Not recommended, prefer using default_chain as shown above
access_key_id: "my-access-key"
secret_access_key: "my-secret-access-key"
region: "us-east-1"
service_name: "vpc-lattice-svcs" # "s3", "lambda" etc.

默认链式认证

默认链式认证方法会按照以下顺序尝试解析凭证,从环境变量开始

凭证类型示例
环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYSECRET_ACCESS_KEYAWS_SESSION_TOKENAWS_ROLE_ARNAWS_IAM_ROLE_SESSION_NAME
共享配置~/.aws/config~/.aws/credentials,通过 AWS_CONFIG_FILEAWS_SHARED_CREDENTIALS_FILE 环境变量配置
Web身份令牌可能通过 AWS_WEB_IDENTITY_TOKEN_FILE 环境变量配置
弹性容器服务(ECS)通过 AWS_CONTAINER_CREDENTIALS_RELATIVE_URIAWS_CONTAINER_CREDENTIALS_FULL_URI,以及 AWS_CONTAINER_AUTHORIZATION_TOKEN 环境变量配置

假设角色

两种认证方法都允许您使用 assume_role 密钥来使用特定的凭证(推荐)。

上一页
授权
下一页
操作限制
评分文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,作为Apollo GraphQL。

隐私政策

公司