Các phương pháp tốt nhất cho cấu hình đặc quyền tối thiểu trong Amazon MWAA

Tác giả: Elizabeth Davis và Mark Richman

Ngày đăng: ngày 29 tháng 4 năm 2025

Danh mục: Amazon Managed Workflows for Apache Airflow (Amazon MWAA), AWS Big Data, Security

Amazon Managed Workflows for Apache Airflow (Amazon MWAA) cung cấp một môi trường được quản lý và an toàn để chạy Apache Airflow trên AWS. Airflow thường được sử dụng trong các ngành có quy định nghiêm ngặt, chẳng hạn như tài chính và chăm sóc sức khỏe. Những khách hàng này có thể muốn hạn chế quyền truy cập và lưu lượng truy cập hơn nữa để nâng cao tư thế bảo mật, so với những gì các cấu hình mặc định của Amazon MWAA cung cấp. Bài viết này đề cập đến một số phương pháp được khuyến nghị.

Principle of least privilege (Nguyên tắc đặc quyền tối thiểu) là một nguyên tắc cơ bản cần được tuân thủ nghiêm ngặt. Khi cấu hình các dịch vụ AWS, điều quan trọng là chỉ cấp những quyền tối thiểu cần thiết cho các tài nguyên, tránh các chính sách quá rộng hoặc quá cho phép.

Trong bài viết này, chúng tôi khám phá cách áp dụng nguyên tắc đặc quyền tối thiểu cho môi trường Amazon MWAA của bạn bằng cách siết chặt bảo mật mạng thông qua các nhóm bảo mật, danh sách kiểm soát truy cập mạng (network access control lists – ACLs),và các điểm cuối VPC (VPC endpoint). Chúng ta cùng thảo luận về các vai trò thực thi và triển khai của Amazon MWAA cùng với các quyền tương ứng của chúng.

Hiểu về môi trường Amazon MWAA

Khi một môi trường Amazon MWAA được tạo, các tài nguyên sẽ được khởi tạo trong một VPC dịch vụ do AWS quản lý và trong VPC do khách hàng quản lý. Trong VPC của khách hàng được cung cấp khi tạo môi trường, các tài nguyên cần thiết để chạy môi trường Airflow sẽ được triển khai, bao gồm các scheduler và worker chạy trên các cụm Amazon Elastic Container Service (Amazon ECS). Các cụm này được triển khai trong VPC của bạn và chúng gắn với các Giao diện mạng đàn hồi (Elastic Network Interfaces – ENIs) với địa chỉ IP riêng trong tài khoản của khách hàng.

Các ENI này trải rộng trên các private subnet thuộc hai Availability Zone để kết nối với cơ sở dữ liệu Airflow và máy chủ web, những thành phần này nằm trong tài khoản do dịch vụ sở hữu (nếu ở chế độ truy cập riêng – private access mode). Sơ đồ sau minh họa kiến trúc này:

Các nhóm bảo mật VPC (VPC security groups) hoạt động như tường lửa ảo có thể kiểm soát lưu lượng mạng ở cấp độ ENI hoặc cấp độ instance. Các nhóm bảo mật là stateful, nghĩa là lưu lượng đến (inbound) tự động cho phép lưu lượng đi (outbound) và ngược lại. Cấu hình mặc định của nhóm bảo mật trong một VPC bắt đầu với không có quy tắc inbound nào và một quy tắc outbound cho phép tất cả lưu lượng. Theo định nghĩa, một nhóm bảo mật không có quy tắc inbound sẽ từ chối tất cả lưu lượng đến nếu lưu lượng đó không được cho phép ra ngoài qua quy tắc outbound 0.0.0.0/0.

Amazon MWAA cung cấp hai chế độ truy cập máy chủ web bên trong VPC của khách hàng: public (công khai) và private (riêng tư). Chế độ máy chủ web công khai phải có cách để lưu lượng truy cập truy cập vào các máy chủ web trong VPC do khách hàng sở hữu thông qua internet công cộng. Điều này yêu cầu định tuyến ra internet công cộng bằng cách sử dụng các subnet công cộng và một NAT gateway. NAT gateway có thể được sử dụng để cung cấp quyền truy cập internet cho các tài nguyên trong subnet riêng. Với chế độ truy cập riêng, nhóm bảo mật cho môi trường Amazon MWAA không cần cho phép lưu lượng đến và đi từ NAT gateway, mà chỉ cần cấp quyền truy cập vào giao diện người dùng Airflow (Airflow UI) cho những người dùng có quyền phù hợp từ bên trong VPC. Một Application Load Balancer chỉ được cấp phát ở chế độ công khai để định tuyến lưu lượng đến các máy chủ web công cộng. Khách hàng phải tự cấu hình các thành phần mạng còn lại.

Nếu môi trường Amazon MWAA của bạn cần giao tiếp với các tài nguyên bên ngoài VPC của bạn (chẳng hạn như nguồn dữ liệu ngoài hoặc API), bạn có thể cần cấu hình các quy tắc nhóm bảo mật và định tuyến phù hợp để cho phép lưu lượng cần thiết. Trong những trường hợp như vậy, bạn thường sử dụng NAT gateway hoặc kết nối VPN để tạo điều kiện giao tiếp giữa môi trường Amazon MWAA của bạn với các tài nguyên bên ngoài, cũng như các điểm cuối VPC (VPC endpoints) cho các dịch vụ AWS.

Để áp dụng các hạn chế bảo mật chặt chẽ hơn, có thể thiết lập một môi trường với định tuyến riêng mà không có quyền truy cập internet, đồng thời có thể áp dụng các quy tắc nhóm bảo mật chi tiết hơn và chính sách điểm cuối VPC (VPC endpoint policies). Vì bài viết này tập trung vào đặc quyền tối thiểu, chúng tôi sẽ tập trung vào các yêu cầu bảo mật tối thiểu cần thiết cho một môi trường Amazon MWAA.

Security Group: Tối thiểu hóa quyền

Môi trường Amazon MWAA của bạn sẽ có một nhóm bảo mật được liên kết với các tài nguyên môi trường trong VPC của bạn. Nhóm bảo mật này cũng được sử dụng bởi các ENI được tạo bởi điểm cuối VPC giao diện (interface VPC endpoint) được sử dụng để giao tiếp với cơ sở dữ liệu và máy chủ web. Theo mặc định, các nhóm bảo mật từ chối tất cả lưu lượng đến và các quy tắc nhóm bảo mật cần được khai báo rõ ràng, chỉ định cổng và nguồn mà instance sẽ cho phép lưu lượng truy cập từ đó. Tối thiểu, môi trường Amazon MWAA phải cho phép lưu lượng đến và đi từ cơ sở dữ liệu  Amazon Aurora PostgreSQL-Compatible Edition được sở hữu và quản lý bởi Amazon MWAA. Cơ sở dữ liệu metadata là một thành phần quan trọng của Airflow, hoạt động như một nguồn dữ liệu trung tâm cho thực thi tác vụ, cấu hình và giám sát. Cả scheduler và worker đều cần truy cập cơ sở dữ liệu này để thực hiện các vai trò tương ứng của chúng trong việc điều phối và chạy các tác vụ. Cơ sở dữ liệu này lắng nghe trên cổng TCP 5432. Ngoài ra, lưu lượng đến máy chủ web có thể được giới hạn ở giao thức HTTPS thông qua cổng TCP 443. Tối thiểu, nhóm bảo mật của Amazon MWAA phải có hai quy tắc inbound, được trình bày chi tiết trong bảng sau:

Nhiều khách hàng có các tài nguyên AWS khác nằm trong các VPC mà các worker của Amazon MWAA cần truy cập. Những tài nguyên này cũng có thể được cấp quyền truy cập mạng trong cấu hình định tuyến riêng bằng cách sử dụng các nhóm bảo mật. Nếu tài nguyên nằm trong cùng một nhóm bảo mật, hãy thêm một quy tắc inbound bổ sung với cổng cần thiết. Ví dụ, nếu một cụm Amazon Redshift nằm trong cùng nhóm bảo mật, hãy thêm quy tắc sau:

Nếu cụm Redshift nằm trong một nhóm bảo mật khác, hãy thay đổi trường nguồn (source) sang nhóm bảo mật của Redshift.

Nếu các tài nguyên nằm trong một VPC khác, thì cần phải bật VPC peering trước khi tham chiếu nhóm bảo mật của VPC đó. Đối với các tài nguyên không nằm trong một subnet, một điểm cuối VPC (VPC endpoint) cũng sẽ cung cấp định tuyến riêng đến và đi từ môi trường Amazon MWAA và các tài nguyên đó. Ví dụ, một điểm cuối VPC cho Amazon Simple Storage Service (Amazon S3) có thể cung cấp bảo mật nâng cao, cải thiện hiệu suất và giảm chi phí.

Network ACLs: Tối thiểu hóa quyền

Network ACLs có thể quản lý (bằng các quy tắc cho phép hoặc từ chối) lưu lượng inbound và outbound ở cấp subnet. ACL là stateless, nghĩa là các quy tắc inbound và outbound phải được chỉ định riêng biệt và rõ ràng. ACL được sử dụng để xác định các loại lưu lượng mạng được phép đi vào hoặc ra khỏi các instance trong một mạng VPC.

Mỗi Amazon VPC có một ACL mặc định cho phép tất cả lưu lượng inbound và outbound, với quy tắc như sau:

Bạn có thể chỉnh sửa các quy tắc ACL mặc định hoặc tạo một ACL tùy chỉnh và gắn nó vào các subnet của mình. Một subnet chỉ có thể gắn với một ACL tại một thời điểm, nhưng một ACL có thể được gắn vào nhiều subnet. Để áp dụng đặc quyền tối thiểu trong môi trường Amazon MWAA của bạn, hãy giới hạn ACL inbound để chỉ cho phép lưu lượng đến từ cơ sở dữ liệu metadata và máy chủ web, đồng thời giới hạn ACL outbound để chỉ cho phép lưu lượng đến các client trong subnet riêng. Lưu ý rằng các ví dụ sau sử dụng các địa chỉ IP riêng giả định cho các subnet được sử dụng.

Inbound NACL

Outbound NACL

VPC endpoints: Tối thiểu hóa quyền

Khi bạn tạo một môi trường Amazon MWAA, nó được triển khai bên trong một VPC. Điều này cho phép bạn kiểm soát quyền truy cập mạng và bảo mật của triển khai Airflow của bạn. Tuy nhiên, một số khối lượng công việc của khách hàng thực thi trong môi trường Amazon MWAA có thể cần điều phối các tác vụ sử dụng các dịch vụ AWS khác, chẳng hạn như Amazon S3 để truy cập tệp, AWS Glue để khởi động các tác vụ ETL (extract, transform and load), hoặc Amazon Redshift để chạy các truy vấn kho dữ liệu, các dịch vụ này nằm bên ngoài VPC của bạn.

Để thiết lập kết nối an toàn và riêng tư giữa môi trường Amazon MWAA của bạn và các dịch vụ AWS bên ngoài này, bạn có thể sử dụng các điểm cuối VPC (VPC endpoints). Mục đích của VPC endpoints trong Amazon MWAA là cung cấp một kết nối an toàn và riêng tư giữa môi trường Amazon MWAA của bạn và các dịch vụ AWS khác bên trong VPC của bạn. VPC endpoints là các thiết bị ảo được cấp phát bên trong VPC của bạn và hoạt động như một điểm vào cho dịch vụ AWS đã chỉ định, cho phép môi trường Amazon MWAA của bạn giao tiếp với dịch vụ đó bằng địa chỉ IP riêng mà không cần đi qua internet công cộng. Sơ đồ sau minh họa kiến trúc này:

Các điểm cuối VPC (VPC endpoints) cho phép bạn giữ lưu lượng mạng của môi trường Amazon MWAA bên trong mạng AWS, giảm thiểu việc phơi bày ra internet công cộng và tăng cường bảo mật tổng thể cho triển khai Airflow của bạn. Mặc dù các điểm cuối VPC riêng tư được tự động tạo cho cơ sở dữ liệu và máy chủ web, nhưng để tạo một môi trường đặc quyền tối thiểu không có quyền truy cập internet, bạn sẽ cần tạo thêm các điểm cuối VPC cho các tài nguyên bắt buộc bổ sung mà Amazon MWAA cần. Amazon S3,  Amazon Simple Queue Service (Amazon SQS), Amazon CloudWatch, và tùy chọn AWS Key Management Service (AWS KMS) sẽ cần các điểm cuối VPC được tạo. Để biết thêm chi tiết, xem Creating the required VPC service endpoints in an Amazon VPC with private routing.

Ngoài các dịch vụ bắt buộc, nhiều khách hàng chạy các workflow Amazon MWAA điều phối thêm các dịch vụ AWS khác, chẳng hạn như Amazon Redshift, Amazon EMR và AWS Glue. Hãy cùng xem một ví dụ về điểm cuối VPC mà chúng tôi muốn sử dụng để kết nối với Amazon Redshift, dịch vụ thường được gọi trong các DAG Airflow bằng Redshift Operator để các workflow tương tác với Amazon Redshift như một kho dữ liệu. Để biết thêm thông tin về cách tạo điểm cuối giao diện VPC (interface VPC endpoint) của Amazon, xem Access an AWS service using an interface VPC endpoint.

Tạo một điểm cuối VPC

Hoàn thành các bước sau để tạo điểm cuối VPC bằng Amazon Virtual Private Cloud (Amazon VPC):

  1. Trên bảng điều khiển Amazon VPC, tạo một điểm cuối VPC mới cho dịch vụ amazonaws.region.redshift, trong đó region là Vùng AWS nơi môi trường Amazon MWAA và cụm Redshift của bạn được đặt. Đảm bảo rằng DNS riêng (private DNS) được bật.
  2. Tạo một chính sách điểm cuối VPC. Chính sách này có thể được sử dụng để giới hạn quyền truy cập vào cụm Redshift chỉ cho môi trường Amazon MWAA, ngăn chặn truy cập trái phép từ các tài nguyên khác. Sau đây là một ví dụ về chính sách:
{

  "Version": "2012-10-17",

  "Statement": [

    {

      "Effect": "Allow",

      "Principal": {

        "AWS": [

          "arn:aws:iam::123456789012:role/YourMWAAExecutionRoleName"

        ]

      },

      "Action": [

        "redshift:DescribeClusters",

        "redshift:DescribeClusterParameters",

        "redshift:DescribeClusterSecurityGroups",

        "redshift:DescribeClusterSubnetGroups",

        "redshift:DescribeEventSubscriptions",

        "redshift:DescribeLoggingStatus",

        "redshift:DescribeReservedNodeOfferings",

        "redshift:DescribeReservedNodes",

        "redshift:DescribeTableRestoreStatus",

        "redshift:DescribeTags",

        "redshift:GetClusterCredentials",

        "redshift:ListTagsForResource",

        "redshift:PurchaseReservedNodeOffering",

        "redshift:ResetClusterParameterGroup",

        "redshift:RestoreFromClusterSnapshot",

        "redshift:RevokeClusterSecurityGroupIngress",

        "redshift:RevokeSnapshotAccess",

        "redshift:ViewQueriesInConsole"

      ],

      "Resource": "arn:aws:redshift:us-east-1:123456789012:cluster/my-redshift-cluster"

    }

  ]

}

Chính sách chứa các tham số sau:

  • Trường Version chỉ định phiên bản ngôn ngữ chính sách.
  • Phần Statement chứa một câu lệnh duy nhất cho phép các hành động được chỉ định trên cụm Redshift.
  • Trường Effect được đặt thành Allow, nghĩa là chính sách cấp quyền thực hiện các hành động được chỉ định.
  • Trường Principal chỉ định vai trò AWS Identity and Access Management (IAM) liên kết với vai trò thực thi Amazon MWAA của bạn, vai trò này được ủy quyền để truy cập vào cụm Redshift.
  • Trường Action liệt kê các hành động cụ thể trên Redshift mà vai trò thực thi Amazon MWAA được phép thực hiện, chẳng hạn như mô tả cụm, lấy thông tin xác thực của cụm, và khôi phục từ bản snapshot.
  • Trường Resource chỉ định Amazon Resource Name (ARN) của cụm Redshift mà chính sách áp dụng.
  1. Bảng định tuyến này phải được sử dụng bởi các subnet nơi môi trường Amazon MWAA của bạn được triển khai. Nếu sử dụng VPC interface endpoint, hãy liên kết điểm cuối với hai subnet riêng và nhóm bảo mật được Amazon MWAA sử dụng.
  2. Hãy chắc chắn rằng các nhóm bảo mật liên kết với môi trường Amazon MWAA và cụm Redshift cho phép lưu lượng inbound và outbound cần thiết giữa chúng. Điều này thường bao gồm cho phép truy cập qua cổng Redshift (thường là 5439) từ nhóm bảo mật của môi trường Amazon MWAA.
  3. Trên bảng điều khiển Amazon MWAA, trong phần Admin, mục Connections, cập nhật thông tin kết nối Redshift để sử dụng địa chỉ điểm cuối VPC thay vì điểm cuối công khai của Redshift. Điều này đảm bảo kết nối giữa Amazon MWAA và Amazon Redshift được an toàn và giữ trong phạm vi VPC.

Bằng cách cấu hình các điểm cuối VPC cho các dịch vụ AWS mà môi trường Amazon MWAA của bạn cần truy cập, bạn có thể cung cấp kết nối an toàn, riêng tư và hiệu quả giữa triển khai Airflow của mình và các tài nguyên AWS.

Hạn chế lưu lượng trong AWS bằng customer managed endpoints cho các tài nguyên Amazon MWAA

Như đã đề cập trước đó, Amazon MWAA tích hợp với nhiều dịch vụ AWS, chẳng hạn như CloudWatch để ghi log, Amazon S3 cho DAGs và requirements, Amazon SQS như một middleware nhắn tin, và tùy chọn AWS KMS để mã hóa. Bạn có thể tạo các điểm cuối VPC cho các dịch vụ này để đảm bảo lưu lượng luôn nằm trong mạng AWS. Quyền truy cập vào các điểm cuối này có thể bị hạn chế bằng cách chỉ cho phép nhóm bảo mật của Amazon MWAA làm nguồn ingress. Để biết chi tiết cách tạo các điểm cuối và chính sách, xem Introducing shared VPC support on Amazon MWAA. Nếu môi trường Amazon MWAA được cập nhật sau ngày 2 tháng 4 năm 2024, nó sẽ chạy trên AWS Fargate v1.4 và sẽ không sử dụng Amazon Elastic Container Registry (Amazon ECR), do đó bạn sẽ không cần tạo điểm cuối VPC cho ECR.

Quản lý quyền để triển khai môi trường Amazon MWAA

Để tạo và triển khai môi trường Amazon MWAA, bạn cần có các quyền phù hợp được cấp cho IAM user hoặc role của mình. Các quyền bắt buộc có thể được cấp thông qua một chính sách IAM gắn với user hoặc role. Khi tạo môi trường Amazon MWAA, bạn có thể chỉ định một vai trò thực thi (execution role) mà các worker Airflow sẽ sử dụng để thực hiện các tác vụ. Vai trò thực thi cần có các quyền cần thiết để truy cập các dịch vụ và tài nguyên AWS bắt buộc dựa trên yêu cầu workflow của bạn. Việc tuân thủ nguyên tắc đặc quyền tối thiểu khi cấp quyền cho các IAM role và user là rất quan trọng. Bạn chỉ nên cấp các quyền tối thiểu cần thiết để môi trường Amazon MWAA và các workflow Airflow hoạt động chính xác.

Trust policy của Amazon MWAA

Amazon MWAA cần có khả năng assume vai trò thực thi để thực hiện các hành động thay mặt bạn. Để thực hiện điều này, hãy tạo một trust policy, cho phép dịch vụ Amazon MWAA quyền AssumeRole. Để tránh vấn đề confused deputy, chúng tôi thêm một điều kiện vào chính sách trust và thay thế số tài khoản AWS cũng như vùng (Region) khi cần thiết. Sau đây là một ví dụ về chính sách:

{

    "Version": "2012-10-17",

    "Statement": [

      {

        "Effect": "Allow",

        "Principal": {

            "Service": ["airflow.amazonaws.com","airflow-env.amazonaws.com"]

        },

        "Action": "sts:AssumeRole",

        "Condition":{

            "ArnLike":{

               "aws:SourceArn":"arn:aws:airflow:your-region:123456789012:environment/your-environment-name"

            },

            "StringEquals":{

               "aws:SourceAccount":"123456789012"

            }

         }

      }

   ]

}

Quyền VPC endpoint cho vai trò triển khai (deployer role)

Mặc dù vai trò được liên kết với dịch vụ (service-linked role) sẽ tạo các điểm cuối VPC, vai trò triển khai (deployer role) vẫn cần có quyền để tạo điểm cuối VPC và thực hiện dry run. Bạn có thể hạn chế các quyền này bằng cách chỉ cho phép hành động ec2:CreateVpcEndpoint và chỉ định các ARN tài nguyên cho các điểm cuối VPC, VPC, subnet và nhóm bảo mật. Ngoài ra, bạn có thể sử dụng khóa điều kiện aws:CalledVia để hạn chế quyền truy cập chỉ cho dịch vụ airflow.amazonaws.com

Vai trò thực thi Amazon MWAA: Các quyền bắt buộc

Khi tạo một môi trường Amazon MWAA, bạn cần chỉ định một vai trò thực thi (execution role) cấp các quyền cần thiết để Airflow có thể tương tác với các dịch vụ AWS khác. Thay vì sử dụng chính sách wildcard (dùng dấu * cho tất cả), bạn có thể tạo một chính sách tùy chỉnh với các quyền tối thiểu cần thiết.

Sau đây là một ví dụ về chính sách vai trò thực thi, cho phép Amazon MWAA tương tác với dịch vụ AWS managed key:

{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Effect": "Allow",

            "Action": "airflow:PublishMetrics",

            "Resource": "arn:aws:airflow:{your-region}:{your-account-id}:environment/{your-environment-name}"

        },

        { 

            "Effect": "Deny",

            "Action": "s3:ListAllMyBuckets",

            "Resource": [

                "arn:aws:s3:::{your-s3-bucket-name}",

                "arn:aws:s3:::{your-s3-bucket-name}/*"

            ]

        },

        { 

            "Effect": "Allow",

            "Action": [ 

                "s3:GetObject*",

                "s3:GetBucket*",

                "s3:List*"

            ],

            "Resource": [

                "arn:aws:s3:::{your-s3-bucket-name}",

                "arn:aws:s3:::{your-s3-bucket-name}/*"

            ]

        },

        {

            "Effect": "Allow",

            "Action": [

                "logs:CreateLogStream",

                "logs:CreateLogGroup",

                "logs:PutLogEvents",

                "logs:GetLogEvents",

                "logs:GetLogRecord",

                "logs:GetLogGroupFields",

                "logs:GetQueryResults"

            ],

            "Resource": [

                "arn:aws:logs:{your-region}:{your-account-id}:log-group:airflow-{your-environment-name}-*"

            ]

        },

        {

            "Effect": "Allow",

            "Action": [

                "logs:DescribeLogGroups"

            ],

            "Resource": [

                "*"

            ]

        },

        {

            "Effect": "Allow",

            "Action": [

                "s3:GetAccountPublicAccessBlock"

            ],

            "Resource": [

                "*"

            ]

        },

        {

            "Effect": "Allow",

            "Action": "cloudwatch:PutMetricData",

            "Resource": "*"

        },

        {

            "Effect": "Allow",

            "Action": [

                "sqs:ChangeMessageVisibility",

                "sqs:DeleteMessage",

                "sqs:GetQueueAttributes",

                "sqs:GetQueueUrl",

                "sqs:ReceiveMessage",

                "sqs:SendMessage"

            ],

            "Resource": "arn:aws:sqs:{your-region}:*:airflow-celery-*"

        },

        {

            "Effect": "Allow",

            "Action": [

                "kms:Decrypt",

                "kms:DescribeKey",

                "kms:GenerateDataKey*",

                "kms:Encrypt"

            ],

            "Resource": "arn:aws:kms:your-region:your-account-id:key/your-kms-cmk-id",

            "Condition": {

                "StringLike": {

                    "kms:ViaService": [

                        "sqs.{your-region}.amazonaws.com",

                        "s3.{your-region}.amazonaws.com"

                    ]

                }

            }

        }

    ]

}

Chính sách này cấp cho Amazon MWAA các quyền cần thiết để tương tác với CloudWatch Logs, Amazon S3, Amazon SQS và AWS KMS khi sử dụng khóa được quản lý bởi AWS (AWS managed key), đồng thời chỉ rõ các tài nguyên mà nó có thể truy cập. Bạn có thể tinh chỉnh thêm chính sách này dựa trên các yêu cầu cụ thể của mình. Sau đây là một ví dụ về chính sách vai trò thực thi cho phép Amazon MWAA tương tác với nhiều dịch vụ KMS customer managed key

{

    "Version": "2012-10-17",

    "Statement": [

        { 

            "Effect": "Deny",

            "Action": "s3:ListAllMyBuckets",

            "Resource": [

                "arn:aws:s3:::{your-s3-bucket-name}",

                "arn:aws:s3:::{your-s3-bucket-name}/*"

            ]

        }, 

        { 

            "Effect": "Allow",

            "Action": [ 

                "s3:GetObject*",

                "s3:GetBucket*",

                "s3:List*"

            ],

            "Resource": [

                "arn:aws:s3:::{your-s3-bucket-name}",

                "arn:aws:s3:::{your-s3-bucket-name}/*"

            ]

        },

        {

            "Effect": "Allow",

            "Action": [

                "logs:CreateLogStream",

                "logs:CreateLogGroup",

                "logs:PutLogEvents",

                "logs:GetLogEvents",

                "logs:GetLogRecord",

                "logs:GetLogGroupFields",

                "logs:GetQueryResults"

            ],

            "Resource": [

                "arn:aws:logs:{your-region}:{your-account-id}:log-group:airflow-{your-environment-name}-*"

            ]

        },

        {

            "Effect": "Allow",

            "Action": [

                "logs:DescribeLogGroups"

            ],

            "Resource": [

                "*"

            ]

        },

        {

            "Effect": "Allow",

            "Action": [

                "s3:GetAccountPublicAccessBlock"

            ],

            "Resource": [

                "*"

            ]

        },

        {

            "Effect": "Allow",

            "Action": "cloudwatch:PutMetricData",

            "Resource": "*"

        },

        {

            "Effect": "Allow",

            "Action": [

                "sqs:ChangeMessageVisibility",

                "sqs:DeleteMessage",

                "sqs:GetQueueAttributes",

                "sqs:GetQueueUrl",

                "sqs:ReceiveMessage",

                "sqs:SendMessage"

            ],

            "Resource": "arn:aws:sqs:{your-region}:*:airflow-celery-*"

        },

        {

            "Effect": "Allow",

            "Action": [

                "kms:Decrypt",

                "kms:DescribeKey",

                "kms:GenerateDataKey*",

                "kms:Encrypt"

            ],

            "Resource": "arn:aws:kms:{your-region}:{your-account-id}:key/{your-kms-cmk-id}",

            "Condition": {

                "StringLike": {

                    "kms:ViaService": [

                        "sqs.{your-region}.amazonaws.com",

                        "s3.{your-region}.amazonaws.com"

                    ]

                }

            }

        }

    ]

}

Đối với trường hợp sử dụng customer managed key, hãy đính kèm JSON policy sau vào khóa để cấp quyền truy cập vào log Airflow trong CloudWatch Logs:

{

    "Sid": "Allow logs access",

    "Effect": "Allow",

    "Principal": {

        "Service": "logs.{your-region}.amazonaws.com"

    },

    "Action": [

        "kms:Encrypt*",

        "kms:Decrypt*",

        "kms:ReEncrypt*",

        "kms:GenerateDataKey*",

        "kms:Describe*"

    ],

    "Resource": "*",

    "Condition": {

        "ArnLike": {

            "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:{your-region}:{your-account-id}:*"

        }

    }

}

Bạn có thể đính kèm nhiều chính sách vào vai trò thực thi (execution role) khi cần để cho phép các worker truy cập thêm các tài nguyên AWS khác. Ví dụ, hãy khám phá cách bật quyền truy cập Amazon EMR. Bạn có thể tạo một JSON policy chứa các quyền hẹp nhất có thể cấu hình, như trong ví dụ sau:

{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Effect": "Allow",

            "Action": [

                "elasticmapreduce:DescribeStep",

                "elasticmapreduce:AddJobFlowSteps",

                "elasticmapreduce:RunJobFlow"

            ],

            "Resource": "arn:aws:elasticmapreduce:*:xxxxxxxxxxxx:cluster/*"

        },

        {

            "Effect": "Allow",

            "Action": "iam:PassRole",

            "Resource": [

                "arn:aws:iam::xxxxxxxxxxxx:role/EMR_EC2_DefaultRole",

                "arn:aws:iam::xxxxxxxxxxxx:role/EMR_DefaultRole"

            ]

        }

    ]

}

Kết luận

Trong bài viết này, chúng tôi đã thảo luận về các phương pháp hay nhất để cấu hình đặc quyền tối thiểu trong Amazon MWAA. Bằng cách làm theo các phương pháp này, bạn có thể tuân thủ nguyên tắc đặc quyền tối thiểu và duy trì tư thế bảo mật vững chắc trong môi trường Amazon MWAA của mình mà không làm giảm chức năng hoặc dựa vào các chính sách quá rộng. Bảo mật luôn là ưu tiên hàng đầu; để tìm hiểu thêm về bảo mật trong Amazon MWAA, hãy xem Security in Amazon Managed Workflows for Apache Airflow Security best practices on Amazon MWAA.

Về tác giả

Elizabeth Davis 

Elizabeth Davis là Sr Solutions Architect tại Amazon Web Services (AWS). Hiện tại, cô làm việc với các công ty công nghệ giáo dục và có niềm đam mê với serverless và các công nghệ data orchestration. Trong hơn 3 năm qua, Elizabeth đã là subject matter expert (SME) về Amazon MWAA.

Mark Richman

Mark Richman là Principal Solutions Architect tại Amazon Web Services với 30 năm kinh nghiệm xây dựng các hệ thống web phức tạp và phần mềm doanh nghiệp. Anh đóng góp cho Apache Airflow, mang kiến thức chuyên sâu về cloud computing và serverless technologies vào nền tảng mã nguồn mở này. Mark cũng là một tác giả và diễn giả giàu kinh nghiệm, đã xuất bản nhiều ấn phẩm thương mại và các khóa học AWS, đồng thời thường xuyên thuyết trình tại các sự kiện trong ngành.