Đơn giản hóa quyền truy cập phi máy chủ bằng AWS SAM Connectors

bởi Eric Johnson | ngày 12 tháng 10 năm 2022 | in AWS Identity and Access Management (IAM), AWS Serverless Application Model, Serverless | Permalink |  Share

Bài viết này được viết bởi Kurt Tometich, Senior Solutions Architect, AWS.

Các nhà phát triển đã sử dụng AWS Serverless Application Model (AWS SAM) để tối ưu hóa quá trình  phát triển các ứng dụng phi máy chủ với AWS kể từ cuối năm 2018. Ngoài việc giúp tạo, xây dựng, thử nghiệm và triển khai các ứng dụng phi máy chủ trở nên dễ dàng hơn thì AWS SAM giờ đây còn đơn giản hóa việc quản lý quyền giữa các các thành phần phi máy chủ với AWS SAM Connectors.

Các trình kết nối cho phép người xây dựng tập trung vào mối quan hệ giữa các thành phần mà không cần kiến ​​thức chuyên môn về AWS Identity and Access Management (IAM) hoặc việc tạo các chính sách tùy chỉnh trực tiếp. Trình kết nối AWS SAM hỗ trợ AWS Step Functions, Amazon DynamoDB, AWS Lambda, Amazon SQS, Amazon SNS, Amazon API Gateway, Amazon EventBridgeAmazon S3, cùng với việc có kế hoạch hỗ trợ thêm nhiều tài nguyên khác trong tương lai.

AWS SAM policy templates là một tính năng hiện có giúp người xây dựng triển khai các ứng dụng phi máy chủ với các chính sách IAM tối thiểu. Vì có một số hạn chế về số lượng mẫu nên chúng rất phù hợp khi có một mẫu tồn tại cho các dịch vụ bạn đang sử dụng. Trình kết nối là lựa chọn tốt nhất cho những người mới bắt đầu và muốn tập trung vào việc mô hình hóa luồng dữ liệu và sự kiện trong ứng dụng của họ. Trình kết nối sẽ lấy mô hình quan hệ mong muốn và tạo ra các quyền cho mối quan hệ tồn tại và hoạt động như mong đợi.

Trong bài viết này, tôi sẽ chỉ cho bạn cách tăng tốc độ phát triển cho phi máy chủ  trong khi vẫn duy trì các phương pháp thực hành bảo mật tốt nhất bằng cách sử dụng AWS SAM connector. Việc xác định trình kết nối trong mẫu AWS SAM yêu cầu một nguồn, đích và quyền (ví dụ: đọc hoặc ghi). Từ định nghĩa này, các chính sách IAM có đặc quyền tối thiểu sẽ được tạo ra bởi trình kết nối.

Cách sử dụng 

Trong AWS SAM template::

1. Tạo tài nguyên phi máy chủ.

2. Xác định một trình kết nối.

3. Thêm một nguồn và một ID điểm đến của các tài nguyên cần kết nối.

4. Xác định các quyền hạn (đọc, ghi) của kết nối.

Ví dụ này tạo ra một Lambda function yêu cầu quyền ghi vào một bảng Amazon DynamoDB để theo dõi các đơn hàng được tạo từ một trang web.

AWS Lambda function cần quyền ghi vào bảng Amazon DynamoDB

Trình kết nối AWS SAM cho các tài nguyên sẽ trông như sau:

LambdaDynamoDbWriteConnector:

  Type: AWS::Serverless::Connector

  Properties:

    Source:

      Id: CreateOrder

    Destination:

      Id: Orders

    Permissions:

      – Write

“LambdaDynamoDbWriteConnector” là tên của trình kết nối, trong khi “Type” xác định nó là một trình kết nối của AWS SAM. “Properties” chứa các logical ID của nguồn và điểm đến cho các tài nguyên phi máy chủ trong mẫu của chúng tôi. Cuối cùng, thuộc tính “Permissions” xác định một mối quan hệ đọc hoặc ghi giữa các thành phần.

Ví dụ cơ bản này cho thấy việc xác định quyền giữa các thành phần là dễ dàng như thế nào. Không cần yêu cầu tên vai trò cụ thể hoặc tên chính sách, và cú pháp này được thống nhất trên nhiều thành phần không máy chủ khác và thúc đẩy việc chuẩn hóa.

Ví dụ

Trình kết nối AWS SAM giúp bạn tiết kiệm thời gian khi ứng dụng của bạn phát triển và kết nối giữa các thành phần phi máy chủ trở nên phức tạp hơn. Việc tạo và quản lý quyền thủ công trở nên dễ xảy ra lỗi và khó khăn khi quy mô mở rộng. Để nhấn mạnh phạm vi hỗ trợ, chúng tôi sẽ sử dụng máy trạng thái AWS Step Functions để hoạt động với một số thành phần phi máy chủ khác. AWS Step Functions là dịch vụ điều phối phi máy chủ tích hợp nguyên bản với các dịch vụ AWS khác.

Tổng quan về giải pháp

Tổng quan về giải pháp

Giải pháp này triển khai quy trình kiểm duyệt danh mục hình ảnh.  Amazon Rekognition kiểm tra nội dung không phù hợp và phát hiện các đối tượng và văn bản trong một hình ảnh. Nó xử lý các hình ảnh hợp lệ và lưu trữ siêu dữ liệu trong một bảng Amazon DynamoDB, nếu không thì nó sẽ gửi một thông báo qua email cho các hình ảnh không hợp lệ.

Điều kiện tiên quyết

  1. Git installed
  2. AWS SAM CLI phiên bản 1.58.0 trở nên

Triển khai giải pháp

  1. Sao chép kho lưu trữ và điều hướng đến thư mục chính:

gitclone https://github.com/aws-samples/step-functions-workflows-collection

cd step-functions-workflows-collection/moderated-image-catalog

  1. Mở tệp template.yaml tại đường dẫn step-functions-workflows-collection/moderated-image-catalog và thay thế phần “ImageCatalogStateMachine:” bằng đoạn mã sau. Đảm bảo giữ nguyên định dạng YAML.

ImageCatalogStateMachine:

    Type: AWS::Serverless::StateMachine

    Properties:

      Name: moderated-image-catalog-workflow

      DefinitionUri: statemachine/statemachine.asl.json

      DefinitionSubstitutions:

        CatalogTable: !Ref CatalogTable

        ModeratorSNSTopic: !Ref ModeratorSNSTopic

      Policies:

        – RekognitionDetectOnlyPolicy: {}

  1. Trong cùng một template.yaml, hãy thêm phần sau vào sau phần ModeratorSNSTopic và trước phần Outputs:

# Serverless connector permissions

StepFunctionS3ReadConnector:

  Type: AWS::Serverless::Connector

  Properties:

    Source:

      Id: ImageCatalogStateMachine

    Destination:

      Id: IngestionBucket

    Permissions:

      – Read

StepFunctionDynamoWriteConnector:

  Type: AWS::Serverless::Connector

  Properties:

    Source:

      Id: ImageCatalogStateMachine

    Destination:

      Id: CatalogTable

    Permissions:

      – Write

StepFunctionSNSWriteConnector:

  Type: AWS::Serverless::Connector

  Properties:

    Source:

      Id: ImageCatalogStateMachine

    Destination:

      Id: ModeratorSNSTopic

    Permissions:

      – Write

Bạn đã loại bỏ các chính sách nội tuyến hiện có và thay thế chúng bằng các cấu hình của trình kết nối AWS SAM, ngoại trừ chính sách Amazon Rekognition. Tính đến thời điểm xuất bản blog này, các trình kết nối không hỗ trợ Amazon Rekognition. Hãy dành thời gian để xem xét cú pháp của từng trình kết nối.

  1. Thực thi ứng dụng bằng lệnh sau:

sam deploy –guided

Cung cấp tên ngăn xếp, khu vực và địa chỉ email của người kiểm duyệt. Những phần còn lại bạn có thể để mặc định.

Xác minh quyền

Sau khi quá trình triển khai hoàn thành, bạn có thể xác nhận vai trò và chính sách hợp lệ.

1. Di chuyển đến trang Step Functions service page trong AWS Management Console và đảm bảo bạn đã chọn khu vực đúng.

2. Chọn State machines từ menu bên trái và sau đó chọn State machines moderated-image-catalog-workflow.

3. Chọn liên kết “IAM role ARN”, nó sẽ đưa bạn đến IAM role và các chính sách đã được tạo ra.

x

Bạn nên thấy một danh sách các chính sách tương ứng với các trình kết nối AWS SAM trong tệp template.yaml với các hành động và tài nguyên.

Danh sách quyền trong bảng điều khiển

Bạn không cần phải cung cấp các hành động chính sách cụ thể: Sử dụng quyền Read hoặc Write thì dịch vụ sẽ xử lý phần còn lại. Điều này giúp cải thiện khả năng đọc, chuẩn hóa và năng suất trong khi vẫn duy trì các biện pháp thực hành  bảo mật tốt nhất.

Kiểm tra

  1. Tải một hình ảnh thử nghiệm lên Amazon S3 bucket được tạo trong bước triển khai. Để tìm tên của bucket, điều hướng đến AWS CloudFormation console. Chọn CloudFormation stack thông qua tên đã nhập trong lệnh “sam deploy –guided”. Chọn tab Outputs và ghi nhớ tên IngestionBucket.
  2. Sau khi tải hình ảnh lên, điều hướng đến AWS Step Functions console và chọn quy trình “moderated-image-catalog-workflow”. 
  3. Chọn Start Execution và nhập một sự kiện:

{

    “bucket”: “<S3-bucket-name>”,

    “key”: “<image-name>.jpeg”

}

  1. Chọn Start Execution và quan sát việc thực hiện quy trình. 
  2. Tùy thuộc vào hình ảnh được chọn, nó sẽ thêm vào danh mục hình ảnh hoặc gửi email kiểm duyệt nội dung đến địa chỉ email được cung cấp. Tìm hiểu thêm về nội dung được Amazon Rekognition coi là không phù hợp.

Dọn dẹp

Để xóa bất kỳ hình ảnh nào được thêm vào Amazon S3 bucket và các tài nguyên được tạo bởi mẫu này, hãy sử dụng các lệnh sau từ cùng một thư mục dự án.

aws s3 rm s3://< bucket_name_here> –recursive

sam delete

Kết luận

Bài đăng trên blog này cho thấy cách trình kết nối AWS SAM đơn giản hóa việc kết nối các thành phần serverless. Xem Developer Guide để tìm hiểu thêm về trình kết nối AWS SAM. Để biết thêm các quy trình làm việc không có máy chủ mẫu giống như quy trình được sử dụng trong blog này, hãy xem Serverless Land.

Leave a comment