当我创建自定义角色并以这种方式编辑策略文档时,我是否只授予 aws lambda 代码的只读 RDS 数据库权限?
Do I give only the read-only RDS database permission for an aws lambda code, when I create custom role and edit the policy document this way?
我想创建一个 aws lambda 代码,它提供 public API 仅用于从 aws rds 数据库实例读取。当我想创建一个 lambda 函数时,它会询问我有关权限角色的信息。因为我害怕,所以我想对代码给予非常严格的权限,只允许从数据库实例中读取。
我找到了 this 网站,它列出了一些托管政策。我可以在里面找到这个:
"AmazonRDSReadOnlyAccess": {
"Arn": "arn:aws:iam::aws:policy/AmazonRDSReadOnlyAccess",
"AttachmentCount": 0,
"CreateDate": "2015-02-06T18:40:53+00:00",
"DefaultVersionId": "v1",
"Document": {
"Statement": [
{
"Action": [
"rds:Describe*",
"rds:ListTagsForResource",
"ec2:DescribeAccountAttributes",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeSecurityGroups",
"ec2:DescribeVpcs"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"cloudwatch:GetMetricStatistics"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "2012-10-17"
},
"IsAttachable": true,
"IsDefaultVersion": true,
"Path": "/",
"PolicyId": "ANPAJKTTTYV2IIHKLZ346",
"PolicyName": "AmazonRDSReadOnlyAccess",
"UpdateDate": "2015-02-06T18:40:53+00:00",
"VersionId": "v1"
},
当我想创建新的自定义角色时,我可以看到默认策略文档。我可以看到基本上包含 {"Statement"、"Version" 和 "Resource"}:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
}
]
}
这非常适合 AmazonRDSReadOnlyAccess 的 "Document" 块,所以我认为需要将其复制粘贴到那里以获得 rds 只读权限。所以我需要放入自定义角色的策略文档中的是:
{
"Statement": [
{
"Action": [
"rds:Describe*",
"rds:ListTagsForResource",
"ec2:DescribeAccountAttributes",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeSecurityGroups",
"ec2:DescribeVpcs"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"cloudwatch:GetMetricStatistics"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "2012-10-17"
}
这是我需要做的事情?我对吗?
它是否允许我让 lambda 函数只从某个 RDS 数据库实例读取?有没有更简单的方法来做到这一点?
因为我在 "create new role from template" 中看到了策略模板,但找不到与此目标相关的任何内容。
IAM 政策,就像您在上面显示的那样,是 grant/deny 仅对 RDS 服务的 管理 的访问权限。这并不授予您访问数据的授权。您可以考虑以下安全方法来保护数据库再次未经授权的访问。
保护 Lambda 执行角色 - 赋予 lambda 服务最低权限角色以访问 RDS 管理服务。
保护 RDS 登录用户 - 创建一个专用于此功能的用户,并授予其访问数据库和执行所需功能所需的最低权限
通过 API 保护 Lambda。您可以使用 AWS API 网关公开 Lambda 函数。这 API 可以进一步防止未经授权的访问。这是可选的。
我想创建一个 aws lambda 代码,它提供 public API 仅用于从 aws rds 数据库实例读取。当我想创建一个 lambda 函数时,它会询问我有关权限角色的信息。因为我害怕,所以我想对代码给予非常严格的权限,只允许从数据库实例中读取。
我找到了 this 网站,它列出了一些托管政策。我可以在里面找到这个:
"AmazonRDSReadOnlyAccess": {
"Arn": "arn:aws:iam::aws:policy/AmazonRDSReadOnlyAccess",
"AttachmentCount": 0,
"CreateDate": "2015-02-06T18:40:53+00:00",
"DefaultVersionId": "v1",
"Document": {
"Statement": [
{
"Action": [
"rds:Describe*",
"rds:ListTagsForResource",
"ec2:DescribeAccountAttributes",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeSecurityGroups",
"ec2:DescribeVpcs"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"cloudwatch:GetMetricStatistics"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "2012-10-17"
},
"IsAttachable": true,
"IsDefaultVersion": true,
"Path": "/",
"PolicyId": "ANPAJKTTTYV2IIHKLZ346",
"PolicyName": "AmazonRDSReadOnlyAccess",
"UpdateDate": "2015-02-06T18:40:53+00:00",
"VersionId": "v1"
},
当我想创建新的自定义角色时,我可以看到默认策略文档。我可以看到基本上包含 {"Statement"、"Version" 和 "Resource"}:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
}
]
}
这非常适合 AmazonRDSReadOnlyAccess 的 "Document" 块,所以我认为需要将其复制粘贴到那里以获得 rds 只读权限。所以我需要放入自定义角色的策略文档中的是:
{
"Statement": [
{
"Action": [
"rds:Describe*",
"rds:ListTagsForResource",
"ec2:DescribeAccountAttributes",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeSecurityGroups",
"ec2:DescribeVpcs"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"cloudwatch:GetMetricStatistics"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "2012-10-17"
}
这是我需要做的事情?我对吗? 它是否允许我让 lambda 函数只从某个 RDS 数据库实例读取?有没有更简单的方法来做到这一点? 因为我在 "create new role from template" 中看到了策略模板,但找不到与此目标相关的任何内容。
IAM 政策,就像您在上面显示的那样,是 grant/deny 仅对 RDS 服务的 管理 的访问权限。这并不授予您访问数据的授权。您可以考虑以下安全方法来保护数据库再次未经授权的访问。
保护 Lambda 执行角色 - 赋予 lambda 服务最低权限角色以访问 RDS 管理服务。
保护 RDS 登录用户 - 创建一个专用于此功能的用户,并授予其访问数据库和执行所需功能所需的最低权限
通过 API 保护 Lambda。您可以使用 AWS API 网关公开 Lambda 函数。这 API 可以进一步防止未经授权的访问。这是可选的。