AWS Secrets Manager 最佳實務 - AWS Secrets Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS Secrets Manager 最佳實務

Secrets Manager 提供許多安全功能,供您在開發和實作自己的安全政策時考慮。以下最佳實務為一般準則,並不代表完整的安全解決方案。這些最佳實務可能不適用或無法滿足您的環境需求,因此請將其視為實用建議就好,而不要當作是指示。

在 中存放憑證和其他敏感資訊 AWS Secrets Manager

Secrets Manager 可協助改善您的安全狀態和合規性,並減少未經授權存取敏感資訊的風險。Secrets Manager 使用您擁有並存放在 AWS Key Management Service () 中的加密金鑰,加密靜態秘密AWS KMS。當您擷取秘密時,Secrets Manager 會解密秘密,並將其安全地傳輸TLS到本機環境。如需詳細資訊,請參閱創建一個 AWS Secrets Manager 秘密

在程式碼中尋找未受保護的秘密

CodeGuru Reviewer 與 Secrets Manager 整合,以使用機密偵測器,在您的程式碼中尋找未受保護的機密。機密偵測器會搜尋硬式編碼密碼、資料庫連線字串、使用者名稱等。如需詳細資訊,請參閱透過 Amazon CodeGuru Reviewer 在您的程式碼中尋找未受保護的機密

Amazon Q 可以掃描您的程式碼庫是否有安全漏洞和程式碼品質問題,以改善整個開發週期的應用程式狀態。如需詳細資訊,請參閱Amazon Q 開發人員使用者指南中的使用 Amazon Q 掃描程式碼

選擇秘密的加密金鑰

在大多數情況下,我們建議使用 aws/secretsmanager AWS 受管金鑰來加密秘密。使用它無需付費。

若要能夠從另一個帳戶存取秘密,或將金鑰政策套用至加密金鑰,請使用客戶受管金鑰來加密秘密。

  • 在金鑰政策中,將值指派給 secretsmanager.<region>.amazonaws.com kms:ViaService 條件金鑰。這會將金鑰的使用限制為僅來自 Secrets Manager 的請求。

  • 若要進一步將金鑰的使用限制為僅來自 Secrets Manager 且內容正確之請求,請在 Secrets Manager 加密內容中使用金鑰或值,作為使用KMS金鑰的條件,方法是建立:

如需詳細資訊,請參閱秘密加密和解密 AWS Secrets Manager

使用快取擷取秘密

若要最有效率地使用您的秘密,我們建議您使用下列其中一個支援的 Secrets Manager 快取元件來快取秘密,並僅在需要時才更新它們:

輪換 秘密

如果您長時間未變更您的秘密,秘密就更有可能遭到盜用。使用 Secrets Manager,您可以設定自動輪換的頻率為每四小時一次。Secrets Manager 提供兩種輪換策略: 單一使用者交替使用者。如需詳細資訊,請參閱Rotate AWS Secrets Manager 秘密

降低使用 的風險 CLI

當您使用 AWS CLI 叫用 AWS 操作時,您可以在命令 Shell 中輸入這些命令。大多數命令 shell 提供功能可能會危害您的秘密,例如記錄和查看上次輸入的命令的能力。使用 AWS CLI 輸入敏感資訊之前,請務必輸入 降低使用 AWS CLI 儲存 AWS Secrets Manager 秘密的風險

限制對秘密的存取

在控制存取秘密IAM的政策陳述式中,使用最低權限存取 的原則。您可以使用IAM角色和政策、資源政策,以及屬性型存取控制 (ABAC)。如需詳細資訊,請參閱的身分驗證和存取控制 AWS Secrets Manager

封鎖對秘密的廣泛存取

在允許 PutResourcePolicy操作的身分政策中,我們建議您使用 BlockPublicPolicy: true。此條件意味著只有在政策不允許廣泛存取時,使用者才能將資源政策連接到秘密。

Secrets Manager 使用 Zelkova 自動推理來分析廣泛存取的資源政策。如需 Zelkova 的詳細資訊,請參閱安全部落格上的 AWS 如何使用自動推理協助您大規模實現 AWS 安全。

下列範例示範如何使用 BlockPublicPolicy

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "secretsmanager:PutResourcePolicy", "Resource": "SecretId", "Condition": { "Bool": { "secretsmanager:BlockPublicPolicy": "true" } } } }

在政策中謹慎處理 IP 地址條件

在允許或拒絕對 Secrets Manager 之存取權的同一政策陳述式中,指定 IP 地址條件運算子aws:SourceIp 條件索引鍵時,請謹慎小心。例如,如果您連接政策,將 AWS 動作限制為來自公司網路 IP 地址範圍的請求,則您作為IAM使用者從公司網路叫用請求的請求會如預期運作。不過,如果您讓其他服務代表您存取秘密,例如當您使用 Lambda 函數啟用輪換時,該函數會從 AWS內部地址空間呼叫 Secrets Manager 操作。使用 IP 地址篩選條件時受到政策影響的請求會失敗。

此外,當請求來自 Amazon VPC端點時,aws:sourceIP條件索引鍵效果較差。若要將請求限制為特定VPC端點,請使用 使用VPC端點條件限制請求

使用VPC端點條件限制請求

若要允許或拒絕存取特定 VPC或VPC端點的請求,請使用 aws:SourceVpc 來限制存取來自指定端點的請求,VPC或aws:SourceVpce限制存取來自指定VPC端點的請求。請參閱 範例:許可和 VPCs

  • aws:SourceVpc 限制對來自指定 之請求的存取VPC。

  • aws:SourceVpce 限制對指定VPC端點請求的存取。

如果您在允許或拒絕對 Secrets Manager 秘密之存取權的資源政策陳述式中使用這些條件金鑰,則您可能會不小心拒絕對使用 Secrets Manager 之服務的存取權,而這些服務會代表您存取秘密。只有部分 AWS 服務可以使用 中的端點執行VPC。如果您將秘密請求限制在 VPC或 VPC 端點,則從未針對 服務設定的服務呼叫 Secrets Manager 可能會失敗。

請參閱 使用 AWS Secrets Manager VPC端點

複寫秘密

Secrets Manager 可以自動將您的秘密複寫到多個 AWS 區域,以符合您的復原能力或災難復原需求。如需詳細資訊,請參閱跨區域複寫 AWS Secrets Manager 密碼

監控秘密

Secrets Manager 可讓您透過與 AWS 記錄、監控和通知服務的整合來稽核和監控秘密。如需詳細資訊,請參閱:

在私有網路上執行您的基礎設施

我們建議您在無法從公有網際網路存取的私有網路上儘可能執行基礎設施。您可以建立介面端點 ,在 VPC和 Secrets Manager 之間建立私有連線。 VPC 如需詳細資訊,請參閱使用 AWS Secrets Manager VPC端點