需要編寫一個Lambda函數在AWS云上運行,它需要訪問企業內部的API獲取JSON格式的數據,企業有網關和防火墻,API有公司的okta身份認證,通過公司的域賬號來授權訪問,現在需要創建一個專用的域賬號,讓Lambda函數訪問Secret Manager,來獲取賬號密碼,然后通過配置訪問公司內部API的數據,請寫出所有的開發配置步驟,以及完成這一功能的所有的Python源代碼,需要確保安全性和可靠性。
一、架構設計
- Lambda函數部署在AWS公有云
- 通過AWS Secrets Manager存儲Okta認證憑證
- Lambda通過HTTPS訪問企業API網關
- 使用Okta的OAuth 2.0客戶端憑證模式獲取訪問令牌
- 所有通信使用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函數中實現業務邏輯。