我想使用基于 AWS Identity and Access Management (IAM) 角色的权限在 Amazon Managed Workflows for Apache Airflow (Amazon MWAA) 中获得定向非循环图 (DAG) 访问权限。
解决方案
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
创建自定义 IAM 策略以授予 Web 服务器访问权限
要创建向 IAM 用户或角色授予 Web 服务器访问权限的自定义 IAM 策略,请使用默认的 Apache Airflow Public(公共)角色。
使用以下 JSON 策略文档创建 IAM 策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "airflow:CreateWebLoginToken",
"Resource": [
"arn:aws:airflow:example-region:example-account-id:role/example-environment/Public"
]
}
]
}
**注意:**将 example-region 替换为您的 AWS 区域,将 example-account-id 替换为您的账户 ID,将 example-environment 替换为您的环境名称。
然后,将策略添加到 IAM 用户或角色。确保 IAM 角色或用户至少登录到 Apache Airflow 一次。
创建自定义 Airflow RBAC 角色
完成以下步骤:
- 使用管理员角色访问您的 Apache Airflow 用户界面。
- 对于 Security(安全),选择 List Roles(列出角色)以查看默认 Apache Airflow 角色。
- 选择角色,然后选择 Copy role(复制角色)。
- 在 Users(用户)表中,找到该角色,然后选择 Edit record(编辑记录)。
- 在 Edit(编辑)页面上,进行以下更改:
将角色名称更新为有效值。
对于 Permissions(权限),移除 can read on DAGs(可在 DAG 上读取)和 can edit on Dags(可在 DAG 上编辑)。
为要授予访问权限的 DAG 添加读写权限。
选择 Save(保存)。
**注意:**您还可以使用 API 创建新的基于角色的访问控制 (RBAC) Airflow 角色。有关详细信息,请参阅 GitHub 网站上的 amazon-mwaa-examples。
分配 Airflow 角色
完成以下步骤:
- 打开 Amazon MWAA 控制台。
- 使用 IAM 角色运行 get-environment 命令:
aws mwaa get-environment --name example-environment | jq '.Environment.WebserverUrl'
**注意:**将 example-environment 替换为您的环境名称。记下命令输出中的 Web 服务器 URL。
- 打开新的浏览器窗口,然后输入 Web 服务器 URL:
https://example-webserver-url/home
**注意:**将 example-webserver-URL 替换为 Web 服务器 URL。
- 确认出现 Forbidden(禁止)错误。
**注意:**之所以出现此错误,是因为您将新角色分配为 Airflow Public(公共)RBAC 角色,但没有所需的权限。
- 使用管理员角色访问环境的 Apache Airflow 用户界面。
- 对于 Security(安全),选择 List Users(列出用户)。
- 在 Users(用户)表中,找到您的 Apache Airflow 用户或角色,然后选择 Edit record(编辑记录)。用户的名字必须与您的 IAM 用户名以 user/customUser 格式相匹配。
- 在 Edit User(编辑用户)页面的 Role(角色)部分中,添加角色。
- 选择 Save(保存)。
IAM Public(公共)角色向 customUser 授予访问 Apache Airflow 用户界面和查看 DAG 的权限。