仅可信网络/预期网络
通过定义预期网络可以解决以下安全问题:
防止意外泄漏的AKSK从非公司网络访问;
防止意外泄漏的凭证窃取数据;
您可以使用以下 IAM 全局条件键来执行控制目标:
aws:SourceIp
: 可以使用这个条件设置仅允许从指定的 IP CIDR 段访问。比如使用你们公司的 IP CIDR段限制仅能从办公网络访问。aws:SourceVpc
: 可以使用这个条件定义指定的VPCs才能访问。比如,只能从指定的VPC ID访问S3存储桶。aws:SourceVpce
: 可以使用这个条件定义指定的 VPC 端点才能访问。增加这个条件可以帮助你限制API请求来自指定的VPC端点。aws:ViaAWSService
: 你可以使用这个条件允许AWS service 使用你的安全凭据代表你执行操作。 比如,当你上传文件到 Amazon S3 使用客户端加密,因此,S3 要请求 AWS KMS 生成一个密钥加密对象。aws:PrincipalIsAWSService
: 这个条件帮助你实现允许 AWS 服务主体访问你的资源。比如你创建了 AWS CloudTrail trail 并且指定了一个 S3 存储桶作为存放目标,CloudTrail 使用服务主体cloudtrail.amazonaws.com, 推送日志到你的 S3 存储桶。从 CloudTrail 发起的API请求 从服务网络来。
结合标签使用可以设置一些绕过SCP控制的资源,比如请求者添加了标签IpRestrictedExempt:true,则不会受到SCP控制。
简单禁用所有操作可以使用SCP如下, IP段为信任的网络,意思是除了给出的IP段访问过来的请求都会被拒绝:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"192.0.2.0/24",
"203.0.113.0/24"
]
}
}
}
}
细化部分操作从可信网络访问过来才允许时设置如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"NotAction": [
"es:ESHttp*",
"dax:PutItem",
"dax:Query",
"dax:Scan",
"dax:GetItem",
"dax:DeleteItem",
"dax:BatchGetItem",
"dax:BatchWriteItem",
"dax:ConditionCheckItem",
"iam:PassRole"
],
"Resource": "*",
"Condition": {
"NotIpAddressIfExists": {
"aws:SourceIp": [
"<my-corporate-cidr>",
"203.0.113.0/24"
]
},
"StringNotEqualsIfExists": {
"aws:SourceVpc": [
"vpc-012abc01",
"vpc-023edf34"
]
},
"Bool": {
"aws:ViaAWSService": "false"
},
"Null": {
"aws:PrincipalTag/IpRestrictedExempt": true
},
"ArnNotLike": {
"aws:PrincipalArn": "arn:aws:iam::*:role/aws:ec2-infrastructure"
}
}
}
]
}
替换<my-data-bucket>, <my-corporate-cidr>和<my-vpc>为你自己的信息:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EnforceNetworkPerimeter",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<my-data-bucket>",
"arn:aws:s3:::<my-data-bucket>/*"
],
"Condition": {
"NotIpAddressIfExists": {
"aws:SourceIp": "<my-corporate-cidr>"
},
"StringNotEqualsIfExists": {
"aws:SourceVpc": "<my-vpc>"
},
"BoolIfExists": {
"aws:PrincipalIsAWSService": "false",
"aws:ViaAWSService": "false"
}
}
}
]
}
参考资料
Establishing a data perimeter on AWS: Allow access to company data only from expected networks
最后更新于