Amazon MWAA 的安全最佳实践 - Amazon Managed Workflows for Apache Airflow

Amazon MWAA 的安全最佳实践

Amazon MWA3 提供了在您开发和实施自己的安全策略时需要考虑的大量安全特征。以下最佳实践是一般指导原则,并不代表完整安全解决方案。这些最佳实践可能不适合环境或不满足环境要求,请将其视为有用的考虑因素而不是惯例。

  • 使用最低许可的权限策略。仅向用户执行任务所需的资源或操作授予权限。

  • 使用 AWS CloudTrail 来监控您账户中的用户活动。

  • 确保 Amazon S3 存储桶策略和对象 ACL 向关联的 Amazon MWAA 环境中的用户授予权限,以将对象放入存储桶。这样可以确保有权向存储桶添加工作流程的用户也拥有在 Airflow 中运行工作流程的权限。

  • 使用与 Amazon MWAA 环境关联的 Amazon S3 存储桶。Amazon S3 存储桶可以是任何名称。请勿在存储桶中存储其他对象,也不要将该存储桶与其他服务一起使用。

Apache Airflow 中的安全最佳实践

Apache Airflow 不是多租户的。虽然有一些访问控制措施可以将某些功能限制为特定用户,而 Amazon MWAA 实施了这些措施,但 DAG 创建者确实能够编写 DAG 来更改 Apache Airflow 用户权限并与底层元数据库进行交互。

在 Amazon MWAA 上使用 Apache Airflow 时,我们建议您执行以下步骤,以确保环境的元数据库和 DAG 的安全。

  • 为具有 DAG 写入权限或能够将文件添加到 Amazon S3 /dags 文件夹的不同团队使用不同的环境,前提是可以写入环境的用户也可以访问 Amazon MWAA 执行角色Apache Airflow 连接访问的任何内容。

  • 请勿直接提供 Amazon S3 DAG 文件夹访问权限。取而代之的是,使用 CI/CD 工具将 DAG 写入 Amazon S3,并通过验证步骤确保 DAG 代码符合团队的安全准则。

  • 阻止用户访问环境的 Amazon S3 存储桶。取而代之的是,使用 DAG 工厂,该工厂基于 YAML、JSON 或其他定义文件生成 DAG,该文件存储在与存储 DAG 的 Amazon MWAA Amazon S3 存储桶不同的位置。

  • Secrets Manager 中管理密钥 虽然这不会阻止可以编写 DAG 的用户读取密钥,但会阻止他们修改环境使用的密钥。

检测 Apache Airflow 用户权限的更改

您可以使用 CloudWatch Logs Insights 检测更改 Apache Airflow 用户权限的 DAG 的情况。为此,每当一个 DAG 更改 Apache Airflow 用户权限时,您可以使用 EventBridge 调度规则、Lambda 函数和 CloudWatch Logs Insights 向 CloudWatch 指标发送通知。

先决条件

要完成本节中的步骤,您需要以下满足以下条件:

要配置有关 Apache Airflow 用户权限更改的通知,请执行以下操作
  1. 创建一个 Lambda 函数,该函数针对五个 Amazon MWAA 环境日志组(DAGProcessingSchedulerTaskWebServerWorker)运行以下 CloudWatch Logs Insights 查询字符串。

    fields @log, @timestamp, @message | filter @message like "add-role" | stats count() by @log
  2. 使用您在上一步中创建的 Lambda 函数作为规则的目标,创建在计划程序上运行的 EventBridge 规则。使用 cron 或 rate 表达式配置计划程序,使其定期运行。