💡
Secrets Manager のアクセス制御
やりたいこと
Secrets Manager に登録されたシークレットに対して以下のアクセス制限を実施したい
- 特定の VPC からのみアクセスをさせたい
- 特定ロールのメンバーのみコンソールや CLI を使用してシークレットの操作/参照が出来る
実装方法
以下二つのポリシーを使用する
- ID ベースのポリシー
- リソースベースのポリシー
実際の設定内容
ID ベースのポリシー
以下ポリシーをシークレットにアクセスさせたいインスタンスや Lambda、ユーザに付与します
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:Put*",
"secretsmanager:DescribeSecret"
],
"Resource": [
"arn:aws:secretsmanager:ap-northeast-1:xxx:secret:<シークレット名>"
]
}
]
}
リソースベースのポリシー
以下ポリシーをシークレットに対して設定します
{
"Version" : "2012-10-17",
"Statement" : [ {
"Effect" : "Deny",
"Principal" : "*",
"Action" : [ "secretsmanager:GetSecretValue", "secretsmanager:Put*", "secretsmanager:Delete*", "secretsmanager:DescribeSecret" ],
"Resource" : "*",
"Condition" : {
"StringNotEquals" : {
"aws:SourceVpc" : "vpc-xxx"
},
"ArnNotEquals" : {
"aws:PrincipalArn" : "arn:aws:iam::xxx:role/<ロール名>"
}
}
}, {
"Effect" : "Deny",
"Principal" : "*",
"Action" : [ "secretsmanager:GetSecretValue", "secretsmanager:Put*", "secretsmanager:Delete*", "secretsmanager:DescribeSecret" ],
"Resource" : "*",
"Condition" : {
"NotIpAddress" : {
"aws:VpcSourceIp" : "x.x.x.x/x"
},
"ArnNotEquals" : {
"aws:PrincipalArn" : "arn:aws:iam::xxx:role/<ロール名>"
}
}
} ]
}
参考
IAM やポリシーについては以下のチバユキさんや公式がわかりやすいというかブックマーク必須のドキュメントです
2023/03/09:追記
こちらもとってもわかりやすかったです
もっとセキュリティを強くするには
VPC エンドポイント上でエンドポイントポリシーを使用する!
Discussion