Làm cách nào để truy cập bí mật API bằng AWS Lambda?

Lam Cach Nao De Truy Cap Bi Mat Api Bang Aws Lambda



Các biện pháp thực hành tốt nhất của Dịch vụ AWS bao gồm hai hành động, tức là Truy xuất lưu trữ và Xoay vòng kiểm tra. Kết hợp hai phương pháp này thành một, AWS đã ra mắt Trình quản lý bí mật giúp người dùng bảo vệ thông tin bí mật trong ứng dụng của họ. AWS Secret Manager được sử dụng rộng rãi để tạo, lưu trữ , sửa đổi , nhân rộng và luân phiên thông tin đăng nhập cơ sở dữ liệu, Khóa API, mã thông báo OAuth, v.v.

Phác thảo nhanh

Bài viết này bao gồm các khía cạnh sau:

AWS Lambda là gì?

AWS Lambda là dịch vụ điện toán để thực thi mã trong nhiều môi trường và ngôn ngữ mà không cần cung cấp và quản lý máy chủ. Hơn nữa, AWS Lambda có thể được kích hoạt bởi nhiều dịch vụ khác nhau của AWS như nhóm S3, Cổng API, v.v. Dịch vụ này tự động thay đổi quy mô ứng dụng và thực thi mã một cách hiệu quả mà không yêu cầu người dùng cài đặt thêm bất kỳ phần phụ thuộc nào.







Để tìm hiểu thêm về dịch vụ Lambda, hãy tham khảo bài viết này tại đây: “Bắt đầu với AWS Lambda” .



Trình quản lý bí mật AWS là gì?

AWS Secret Manager cho phép người dùng bảo mật và mã hóa thông tin bí mật của các ứng dụng như mã thông báo OAuth, thông tin xác thực cơ sở dữ liệu, API, v.v. Thông tin bí mật này được gọi là 'bí mật' . Những bí mật này chỉ được truy cập bởi các cơ quan có thẩm quyền và có thể được luân chuyển để tăng cường bảo mật.



Tìm hiểu thêm về cách lưu trữ thông tin xác thực RDS trong Trình quản lý bí mật bằng cách tham khảo bài viết này: “Làm cách nào để lưu trữ thông tin xác thực Amazon RDS bằng Trình quản lý bí mật?”





Làm cách nào để truy cập bí mật API trong AWS bằng AWS Lambda?

Lambda cung cấp hỗ trợ tích hợp cho nhiều dịch vụ, ví dụ: Nhóm S3, Cổng API và Trình quản lý bí mật. Bạn có thể sử dụng các hàm Lambda để lấy giá trị của các bí mật đã được định cấu hình. Bằng cách sử dụng bí mật API trong AWS Lambda Functions, người dùng có thể tương tác với nhiều dịch vụ của AWS. Các bí mật API như vậy cũng rất quan trọng để cấp phép cho các hàm lambda.

Để truy cập Khóa API trong AWS Secret Manager bằng AWS Lambda, hãy làm theo các bước được đề cập bên dưới:



  • Bước 1: Tạo bí mật API
  • Bước 2: Tạo chính sách IAM
  • Bước 3: Tạo vai trò IAM
  • Bước 4: Tạo vai trò Lambda

Bước 1: Tạo bí mật API

Trước khi truy cập khóa API trong AWS Secret Manager, trước tiên chúng ta sẽ tìm hiểu cách tạo bí mật API . Với mục đích này, hãy truy cập vào “Người quản lý bí mật” dịch vụ từ Bảng điều khiển quản lý AWS:

Trên Bảng điều khiển chính của AWS Secret Manager, hãy nhấp vào “Lưu trữ một bí mật mới” cái nút:

bên trong “Loại bí mật” chặn, chọn “Loại bí mật khác” tùy chọn từ các tùy chọn khác nhau được hiển thị:

Cuộn xuống “Cặp khóa/giá trị” phần và cung cấp một cặp khóa-giá trị duy nhất cho bí mật API của bạn. ĐẾN thêm vào hơn cặp khóa-giá trị , bấm vào 'Thêm dòng' cái nút:

Tiếp theo là “Khóa mã hóa” phần. AWS cung cấp một khóa mã hóa mặc định cho bí mật. Tuy nhiên, người dùng cũng có thể cung cấp tên tùy chỉnh cho khóa. Bằng cách giữ nguyên mặc định, nhấp vào “ Kế tiếp ' cái nút:

Trên giao diện này, người dùng phải cung cấp một tên duy nhất vì bí mật của họ và một mô tả là tùy chọn lĩnh vực ở đây:

Bằng cách giữ cài đặt không thay đổi , hãy tiếp tục bằng cách nhấp vào “ Kế tiếp ' cái nút:

Tiếp theo là Phần đánh giá. Để xác nhận tất cả các thông tin cung cấp là Chính xác , nhấp chuột vào “ Cửa hàng Nút ” nằm ở cuối giao diện:

Bí mật đã được thành công trong việc tạo ra . Bấm vào “ Tải lại Nút ” để hiển thị tên bí mật trên bảng điều khiển :

Bước 2: Tạo chính sách IAM

ĐẾN tạo chính sách IAM, Truy cập Dịch vụ IAM từ Bảng điều khiển quản lý AWS:

Từ thanh bên của IAM dịch vụ, nhấp vào “ Chính sách ' lựa chọn:

Trên Bảng điều khiển chính sách , bấm vào “Tạo chính sách” cái nút:

Tìm hiểu thêm về chính sách AWS IAM bằng cách tham khảo bài viết này: “Ví dụ về chính sách AWS IAM”

Tiếp theo là “Chỉ định quyền” phần. Tìm kiếm và chọn “Người quản lý bí mật” dịch vụ:

Cuộn xuống “Hành động được phép” khối. Tại đây, từ các cấp độ Truy cập khác nhau, hãy nhấn vào “ Đọc ' lựa chọn. Chọn “Tất cả các hành động đã đọc” tùy chọn để kích hoạt tất cả các Đọc dịch vụ cho chính sách này:

Cuộn xuống đến “ Tài nguyên ” và nhấp vào “Thêm ARN” lựa chọn:

Điều hướng trở lại Bảng thông tin quản lý bí mật AWS và nhấp vào tên của bí mật. Sao chép ' ARN ” về bí mật bên dưới “ ARN bí mật ” nhãn từ giao diện hiển thị:

Trên Bảng điều khiển ngay bây giờ , dán ARN đã sao chép vào “ ARN ' cánh đồng:

Trước khi bấm vào “Thêm ARN” nút, bấm vào 'Tài khoản này' nút để xác nhận những bí mật tồn tại trong cùng một tài khoản. Sau khi định cấu hình cài đặt, nhấp vào “Thêm ARN” cái nút:

Sau đó cấu hình tất cả cài đặt của chính sách, nhấp vào “ Kế tiếp ' cái nút:

bên trong Phần chi tiết chính sách , hãy cung cấp tên cho chính sách trong phần “ Tên chính sách ' cánh đồng:

Bấm vào “ Tạo chính sách ' cái nút:

Các chính sách đã được tạo thành công :

Bước 3: Tạo vai trò IAM

Trong phần này, hãy tạo một vai trò IAM chứa các quyền cần thiết để các hàm Lambda truy cập vào các bí mật. Với mục đích này, hãy nhấp vào “ Vai trò ” tùy chọn từ thanh bên của vai trò IAM rồi chạm vào “Tạo vai trò” nút từ giao diện:

Sau khi nhấp chuột vào “Tạo vai trò” nút, giao diện sau sẽ được hiển thị cho bạn. Chọn “Dịch vụ AWS” tùy chọn từ các tùy chọn sau vì chúng tôi sẽ đính kèm tùy chọn này Vai trò IAM với hàm lambda:

bên trong “Trường hợp sử dụng” phần, tìm kiếm Dịch vụ Lambda và chọn nó. Nhấn vào “ Kế tiếp Nút ” ở cuối giao diện để tiếp tục:

trên giao diện tiếp theo , tìm kiếm tên của Tên chính sách mà chúng ta đã cấu hình trước đó. Từ kết quả hiển thị, chọn tên chính sách:

Nhấn vào ' Kế tiếp Nút ” ở cuối giao diện để tiếp tục:

Cung cấp một định danh duy nhất cho bạn Vai trò IAM trong trường được đánh dấu sau:

Giữ phần còn lại cài đặt mặc định , bấm vào “Tạo vai trò” bằng cách cuộn xuống cuối giao diện:

Vai trò đã được thành công tạo:

Để tìm hiểu thêm về Tạo vai trò IAM trong AWS, hãy tham khảo bài viết này: “Cách tạo vai trò IAM trong AWS” .

Bước 4: Tạo hàm Lambda

Bước tiếp theo là Tạo Hàm Lambda. Hàm lambda này sẽ chứa vai trò IAM và sẽ lấy giá trị của các bí mật khi được thực thi. Để truy cập dịch vụ Lambda, hãy tìm kiếm “ Lambda ” trong thanh tìm kiếm của Bảng điều khiển quản lý AWS . Nhấp vào tên dịch vụ từ kết quả để truy cập bảng điều khiển:

Trên giao diện ban đầu của Dịch vụ Lambda, nhấp vào “Tạo chức năng” cái nút:

Điều này sẽ hiển thị “Tạo chức năng” giao diện. Chọn “Tác giả từ đầu” tùy chọn và tiếp tục bằng cách cung cấp tên cho Hàm Lambda trong trường được đánh dấu:

bên trong Trường thời gian chạy , chọn “ Python 3.9 ' môi trường:

Bên dưới Phần thời gian chạy , đây là một “Thay đổi vai trò thực thi mặc định” phần. Chọn “Sử dụng vai trò hiện có” tùy chọn và sau đó chỉ định vai trò trong “Vai trò hiện tại” cánh đồng:

Trên cùng giao diện đó, chạm vào “Tạo chức năng” nút ở cuối giao diện:

Để tìm hiểu thêm về cách tạo Hàm Lambda, hãy tham khảo bài viết này: “Cách tạo hàm Lambda với Pyhton Runtime” .

Hàm Lambda đã được tạo. Bước tiếp theo là cung cấp mã cho hàm Lambda. Khi mã này được thực thi, nó sẽ hiển thị các giá trị của Người quản lý bí mật:

nhập khẩu json
nhập khẩu boto3
nhập khẩu cơ sở64
từ botocore. ngoại lệ nhập khẩu Lỗi máy khách

chắc chắn lambda_handler ( sự kiện , bối cảnh ) :
môi trường = sự kiện [ 'env' ]
tên_bí mật = 'shmaster19/%s/key' % môi trường
tên vùng = 'ap-đông nam-1'

phiên họp = boto3. phiên họp . Phiên họp ( )
khách hàng = phiên họp. khách hàng (
Tên dịch vụ = 'người quản lý bí mật' ,
tên vùng = tên vùng
)

thử :
bí mật_value_response = khách hàng. get_secret_value (
ID bí mật = tên_bí mật
)
ngoại trừ lỗi ClientError :
in ( lỗi )
khác :
nếu như 'Chuỗi bí mật' TRONG bí mật_value_response :
bí mật = json. tải ( bí mật_value_response [ 'Chuỗi bí mật' ] )
trở lại bí mật
khác :
giải mã_binary_secret = cơ sở64. giải mã b64 ( bí mật_value_Response [ 'Bí mật nhị phân' ] )
trở lại giải mã_binary_secret
  • nhập json: được sử dụng để thực hiện các hoạt động JSON.
  • nhập boto3: là SDK để liên lạc giữa AWS và Python.
  • nhập cơ sở64: Dùng để thực hiện các chức năng mã hóa, giải mã trên dữ liệu nhị phân dưới dạng Base64.
  • nhập Lỗi khách hàng: Điều này cho phép người dùng xử lý các ngoại lệ trong mã bằng văn bản.
  • tên_bí mật: Trong biến này, hãy cung cấp tên bí mật của bạn. Lưu ý rằng bí mật này chứa '%S' . Đây là khi người dùng có nhiều khóa có định dạng tương tự. Ví dụ: nếu người dùng đã tạo hai bí mật, ví dụ: “apikey/dev/khóa” “apikey/prod/key” . Sau đó trong '%S' , nếu người dùng cung cấp “ nhà phát triển ”, hàm Lambda sẽ cung cấp chìa khóa phát triển (apikey/dev/key) và ngược lại.
  • boto. phiên.Session(): cho phép người dùng tạo các ứng dụng khách và phản hồi dịch vụ.
  • tên vùng: Cung cấp tên khu vực nơi bí mật AWS của bạn được định cấu hình.
  • Secret_value_response: Trong biến này, chúng tôi đang sử dụng “ client.get_secret_value ” sẽ trả về giá trị của bí mật.
  • Giải mã_binary_secert: Sau khi có được giá trị của bí mật, nó sẽ tiếp tục được giải mã thành định dạng cơ sở 64 .

Sau khi dán mã vào Hàm Lambda, hãy nhấp vào nút “ Triển khai Nút ” để lưu và áp dụng các thay đổi:

Bước 5: Kiểm tra mã

Trong phần này của blog, chúng tôi sẽ xác minh xem mã có hoạt động hay không. Với mục đích này, hãy nhấp vào “ Bài kiểm tra Nút ” sau khi triển khai thành công các thay đổi đối với Hàm Lambda:

Trên giao diện tiếp theo, cung cấp tên cho bài kiểm tra sự kiện trong “Tên sự kiện” cánh đồng:

Cuộn xuống Phần JSON sự kiện , chỉ định la ' env ” và cung cấp giá trị ở định dạng JSON. Các ' giá trị ” của khóa sẽ được chuyển cho '%S' . Vì những bí mật mà chúng tôi đã chỉ định có chứa “ nhà phát triển ” giá trị, “ nhà phát triển ” giá trị được truyền cho “ env ' Biến đổi. Hàm Lambda sẽ xác định bí mật khi mã được thực thi dưới dạng mã định danh của bí mật cụ thể được cung cấp trong mã. Sau khi xác định thông tin chi tiết, nhấp vào “ Cứu ' cái nút:

Khi sự kiện được tạo thành công, nhấp vào nút “ Bài kiểm tra ' cái nút:

Ở đây chúng tôi có thu được thành công giá trị của bí mật được chỉ định của chúng tôi:

Đó là tất cả từ hướng dẫn này.

Phần kết luận

Để truy cập các khóa API trong Trình quản lý bí mật bằng Lambda, trước tiên hãy tạo Bí mật API, Chính sách IAM, Vai trò và Hàm Lambda rồi thực thi mã của hàm. Các hàm Lambda có thể được gọi để lấy các giá trị của AWS Secret Manager bằng cách chỉ định mã định danh của bí mật khi thực thi mã. Bài viết này cung cấp hướng dẫn từng bước về cách truy cập Khóa API trong AWS Secret Manager bằng AWS Lambda.