使用 IAM 执行角色访问 AWS 资源 - AWS Device Farm

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 IAM 执行角色访问 AWS 资源

Device Farm 支持指定将在测试执行期间由自定义测试运行时环境担任的 IAM 角色。此功能允许您的测试安全地访问您账户中的 AWS 资源,例如 Amazon S3 存储桶、DynamoDB 表或您的应用程序所依赖的其他 AWS 服务。

概述

当您指定 IAM 执行角色时,Device Farm 将在测试执行期间担任此角色,从而允许您的测试使用角色中定义的权限与 AWS 服务进行交互。

IAM 执行角色的常见用例包括:

  • 访问存储在 Amazon S3 存储桶中的测试数据

  • 将测试项目推送到 Amazon S3 存储桶

  • 从 AWS 检索应用程序配置 AppConfig

  • 将测试日志和指标写入 Amazon CloudWatch

  • 向 Amazon SQS 队列发送测试结果或状态消息

  • 在测试工作流程中调用 AWS Lambda 函数

IAM 角色要求

要在 Device Farm 中使用 IAM 执行角色,您的角色必须满足以下要求:

  • 信任关系:必须信任 Device Farm 服务主体才能担任该角色。信任策略必须包含devicefarm.amazonaws.com为可信实体。

  • 权限:该角色必须具有访问测试所需的 AWS 资源所需的必要权限。

  • 会话时长:角色的最大会话持续时间必须至少等于您的 Device Farm 项目的作业超时设置。默认情况下,Device Farm 项目的作业超时时间为 150 分钟,因此您的角色必须支持至少 150 分钟的会话持续时间。

  • 相同的账户要求:IAM 角色必须与用于调用 Device Farm 的角色位于相同的 AWS 账户中。不支持跨账户角色假设。

  • PassRole 权限:必须通过允许对指定执行角色执行iam:PassRole操作的策略授权调用方传递 IAM 角色。

示例信任策略

以下示例显示了允许 Device Farm 担任您的执行角色的信任策略。此信任策略应仅附加到您打算在 Device Farm 中使用的特定 IAM 角色,而不应附加到您账户中的其他角色:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "devicefarm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

权限策略示例

以下示例显示了一个权限策略,该策略授予对测试中使用的常见 AWS 服务的访问权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-test-bucket", "arn:aws:s3:::my-test-bucket/*" ] }, { "Effect": "Allow", "Action": [ "appconfig:GetConfiguration", "appconfig:StartConfigurationSession" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/devicefarm/test-*" }, { "Effect": "Allow", "Action": [ "sqs:SendMessage", "sqs:GetQueueUrl" ], "Resource": "arn:aws:sqs:*:*:test-results-*" } ] }

配置 IAM 执行角色

您可以在项目级别或为单个测试运行指定 IAM 执行角色。在项目级别进行配置后,该项目中的所有运行都将继承执行角色。在运行时配置的执行角色将取代其父项目上配置的任何执行角色。

有关配置执行角色的详细说明,请参阅:

您也可以使用 Device Farm API 配置执行角色。如需了解更多信息,请参阅 Dev ice Farm API 参考

最佳实践

在为 Device Farm 测试配置 IAM 执行角色时,请遵循以下最佳实践:

  • 最低权限原则:仅授予测试运行所需的最低权限。避免使用过于宽泛的权限,例如*操作或资源。

  • 使用特定资源的权限:如果可能,请将权限限制为特定资源(例如特定的 S3 存储桶或 DynamoDB 表),而不是某一类型的所有资源。

  • 将测试资源和生产资源分开:使用专用的测试资源和角色,以避免在测试期间意外影响生产系统。

  • 定期审查角色:定期审查和更新您的执行角色,以确保他们仍然满足您的测试需求并遵循安全最佳实践。

  • 使用条件键:考虑使用 IAM 条件键来进一步限制角色的使用时间和方式。

问题排查

如果您遇到与 IAM 执行角色有关的问题,请检查以下内容:

  • 信任关系:验证角色的信任策略是否包含devicefarm.amazonaws.com为可信服务。

  • 权限:检查该角色是否具有您的测试尝试访问的 AWS 服务的必要权限。

  • 测试日志:查看测试执行日志,了解与 AWS API 调用或权限拒绝相关的特定错误消息。