實現AWS Lambda函數安全地請求企業內部API返回數據

需要編寫一個Lambda函數在AWS云上運行,它需要訪問企業內部的API獲取JSON格式的數據,企業有網關和防火墻,API有公司的okta身份認證,通過公司的域賬號來授權訪問,現在需要創建一個專用的域賬號,讓Lambda函數訪問Secret Manager,來獲取賬號密碼,然后通過配置訪問公司內部API的數據,請寫出所有的開發配置步驟,以及完成這一功能的所有的Python源代碼,需要確保安全性和可靠性。


一、架構設計

  1. Lambda函數部署在AWS公有云
  2. 通過AWS Secrets Manager存儲Okta認證憑證
  3. Lambda通過HTTPS訪問企業API網關
  4. 使用Okta的OAuth 2.0客戶端憑證模式獲取訪問令牌
  5. 所有通信使用TLS加密

二、配置步驟

1. 創建專用域賬號
  • 在企業Okta控制臺:
    • 創建新應用(OAuth 2.0客戶端憑證類型)
    • 生成Client ID和Client Secret
    • 配置API訪問權限范圍(Scopes)
2. 配置AWS Secrets Manager
aws secretsmanager create-secret --name prod/okta_api_creds \
--secret-string '{"client_id": "YOUR_CLIENT_ID","client_secret": "YOUR_CLIENT_SECRET","token_url": "https://yourcompany.okta.com/oauth2/v1/token","api_endpoint": "https://internal-api.yourcompany.com/v1/data"
}'
3. 配置Lambda執行角色

IAM策略示例:

{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "secretsmanager:GetSecretValue","Resource": "arn:aws:secretsmanager:region:account-id:secret:prod/okta_api_creds-*"},{"Effect": "Allow","Action": "logs:CreateLogGroup","Resource": "arn:aws:logs:region:account-id:*"},{"Effect": "Allow","Action": ["logs:CreateLogStream","logs:PutLogEvents"],"Resource": ["arn:aws:logs:region:account-id:log-group:/aws/lambda/your-function-name:*"]}]
}
4. 網絡配置(可選)

如果企業API在私有網絡:

  • 部署Lambda到VPC私有子網
  • 配置安全組出站規則
  • 設置VPC對等連接或VPN到企業網絡,具體來說,可以使用VPC對等連接連接到已有的可以連接到公司VPN網絡,也可以在VPC網絡里創建EC2實例安裝可以連接到公司VPN的第三方連接軟件實現連接,Lambda調用EC2上的Python代碼實現,還可以使用AWS Site-to-Site VPN組件直接連接VPN實現,在Lambda函數中實現業務邏輯。

三、Python源代碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78017.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78017.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78017.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

子網劃分的學習

定長子網劃分(Fixed-length Subnetting) 也叫做固定長度子網劃分,是指在一個IP網絡中,把網絡劃分成若干個大小相等的子網,每個子網的子網掩碼長度是一樣的。 一、定長子網劃分的背景 在早期的IP地址分配中&#xff0…

3.QT-信號和槽|自定義槽函數|自定義信號}自定義的語法}帶參數的信號和槽(C++)

信號和槽 Linux信號 Signal 系統內部的通知機制. 進程間通信的方式. 信號源:誰發的信號.信號的類型:哪種類別的信號信號的處理方式:注冊信號處理函數,在信號被觸發的時候自動調用執行. Qt中的信號和Linux中的信號,雖…

如何在 Element UI 中優雅地使用 `this.$loading` 顯示和隱藏加載動畫

如何在 Element UI 中優雅地使用 this.$loading 顯示和隱藏加載動畫 在現代 Web 應用開發中,用戶體驗至關重要。當執行耗時操作(如網絡請求或數據處理)時,顯示一個友好的加載動畫可以讓用戶知道系統正在工作,而不是卡…

動態加載內容時selenium如何操作?

當處理動態加載的內容時,Selenium 是一個非常強大的工具,因為它可以模擬真實用戶的瀏覽器行為,等待頁面元素加載完成后再進行操作。以下是使用 Selenium 獲取動態加載內容的詳細步驟和代碼示例。 一、安裝 Selenium 和 ChromeDriver &#…

力扣第446場周賽

有事沒趕上, 賽后模擬了一下, 分享一下我的解題思路和做題感受 1.執行指令后的得分 題目鏈接如下:力扣 給你兩個數組:instructions 和 values,數組的長度均為 n。 你需要根據以下規則模擬一個過程: 從下標 i 0 的第一個指令開…

三維點擬合平面ransac c++

理論 平面的一般定義 在三維空間中,一個平面可以由兩個要素唯一確定: 法向量 n(a,b,c):垂直于平面的方向 平面上一點 平面上任意一點 p(x,y,z) 滿足: ( p ? p 0 ) ? n 0 (p - p0) * n 0 (p?p0)?n0 即 a ( x ? x 0 ) …

基于LSTM-AutoEncoder的心電信號時間序列數據異常檢測(PyTorch版)

心電信號(ECG)的異常檢測對心血管疾病早期預警至關重要,但傳統方法面臨時序依賴建模不足與噪聲敏感等問題。本文使用一種基于LSTM-AutoEncoder的深度時序異常檢測框架,通過編碼器-解碼器結構捕捉心電信號的長期時空依賴特征&#…

Docker 部署 PostgreSQL 數據庫

Docker 部署 PostgreSQL 數據庫 基于 Docker 部署 PostgreSQL 數據庫一、拉取 PostgreSQL 鏡像二、運行 PostgreSQL 容器三、運行命令參數詳解四、查看容器運行狀態 基于 Docker 部署 PostgreSQL 數據庫 一、拉取 PostgreSQL 鏡像 首先,確保你的 Docker 環境已正確…

MySQL性能調優(四):MySQL的執行原理(MYSQL的查詢成本)

文章目錄 MySQL性能調優數據庫設計優化查詢優化配置參數調整硬件優化 1.MySQL的執行原理-21.1.MySQL的查詢成本1.1.1.什么是成本1.1.2.單表查詢的成本1.1.2.1.基于成本的優化步驟實戰1. 根據搜索條件,找出所有可能使用的索引2. 計算全表掃描的代價3. 計算使用不同索…

用 Go 優雅地清理 HTML 并抵御 XSS——Bluemonday

1、背景與動機 只要你的服務接收并回顯用戶生成內容(UGC)——論壇帖子、評論、富文本郵件正文、Markdown 等——就必須考慮 XSS(Cross?Site Scripting)攻擊風險。瀏覽器在解析 HTML 時會執行腳本;如果不做清理&#…

Redis SCAN 命令的詳細介紹

Redis SCAN 命令的詳細介紹 以下是 Redis SCAN? 命令的詳細介紹,結合其核心特性、使用場景及底層原理進行綜合說明: 工作原理圖 : ? 一、核心特性 非阻塞式迭代 通過游標(Cursor) 分批次遍歷鍵,避免一次…

SpringBoot3集成MyBatis-Plus(解決Boot2升級Boot3)

總結:目前升級僅發現依賴有變更,其他目前未發現,如有發現,后續會繼續更新 由于項目架構提升,以前開發的很多公共的組件,以及配置都需要升級,因此記錄需要更改的配置(記錄時間&#…

基于mybatis與PageHelper插件實現條件分頁查詢(3.19)

實現商品分頁例子 需要先引入mybatis與pagehelper插件&#xff0c;在pom.xml里 <!-- Mybatis --> <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3&l…

Spring Bean 全方位指南:從作用域、生命周期到自動配置詳解

目錄 1. Bean 的作用域 1.1 singleton 1.2 prototype 1.3 request 1.4 session 1.5 application 1.5.1 servletContext 和 applicationContext 區別 2. Bean 的生命周期 2.1 詳解初始化 2.1.1 Aware 接口回調 2.1.2 執行初始化方法 2.2 代碼示例 2.3 源碼 [面試題…

C++ (非類型參數)

模板除了定義類型參數之外&#xff0c;也可以在模板內定義非類型參數 非類型參數不是類型&#xff0c;而是值&#xff0c;比如&#xff1a;指針&#xff0c;整數&#xff0c;引用 非類型參數的用法&#xff1a; 1.整數常量&#xff1a;非類型參數最常見的形式是整數常量&…

短視頻+直播商城系統源碼全解析:音視頻流、商品組件邏輯剖析

時下&#xff0c;無論是依托私域流量運營的品牌方&#xff0c;還是追求用戶粘性與轉化率的內容創作者&#xff0c;搭建一套完整的短視頻直播商城系統源碼&#xff0c;已成為提升用戶體驗、增加商業變現能力的關鍵。本文將圍繞三大核心模塊——音視頻流技術架構、商品組件設計、…

5.QT-常用控件-QWidget|enabled|geometry|window frame(C++)

控件概述 實現圖形化界面的程序. Qt中已經給我們提供了很多的“控件" 就需要學習和了解這些控件&#xff0c;學會如何使用這些控件 編程講究的是“站在巨人的肩膀上”&#xff0c;而不是“從頭發明輪子" 一個圖形化界面上的內容&#xff0c;不需要咱們全都從零去實…

2025-04-22| Docker: --privileged參數詳解

在 Docker 中&#xff0c;--privileged 是一個運行容器時的標志&#xff0c;它賦予容器特權模式&#xff0c;大幅提升容器對宿主機資源的訪問權限。以下是 --privileged 的作用和相關細節&#xff1a; 作用 完全訪問宿主機的設備&#xff1a; 容器可以訪問宿主機的所有設備&am…

高性能服務器配置經驗指南1——剛配置好服務器應該做哪些事

文章目錄 安裝ubuntu安裝必要軟件設置用戶遠程連接安全問題ClamAV安裝教程步驟 1&#xff1a;更新系統軟件源步驟 2&#xff1a;升級系統&#xff08;可選但推薦&#xff09;步驟 3&#xff1a;安裝 ClamAV步驟 4&#xff1a;更新病毒庫步驟 5&#xff1a;驗證安裝ClamAV 常用命…

直流絕緣監測解決方案:保障工業與新能源系統的安全運行

一、引言 隨著工業自動化和新能源技術的快速發展&#xff0c;直流供電系統在光伏發電、儲能電站、電動汽車充電樁等領域的應用日益廣泛。然而&#xff0c;直流系統的正負極不接地&#xff08;IT系統&#xff09;特性&#xff0c;使得絕緣故障可能導致漏電、短路甚至設備損毀等…