配置示例一:只配置VPC终端节点策略
场景描述:
只允许VPC1内的服务器下载桶mybucket中的对象。
其中VPC1的ID为:4dad1f75-0361-4aa4-ac75-1ffdda3a0fec。
配置方法:
配置VPC1的终端节点策略如下:
入口:服务列表 > VPC终端节点 > 单击对应VPC终端节点ID(OBS双端固定的终端节点) > 策略 > 编辑
[
{
"Action": [
"obs:object:GetObject"
],
"Resource": [
"obs:*:*:object:mybucket/*"
],
"Effect": "Allow"
}
]
配置示例二:只配置VPC终端节点策略,禁止指定资源下载
场景描述:
除了桶mybucket中的名为myobject对象外,允许VPC1内的服务器下载桶mybucket中所有其他对象。
配置方法:
配置VPC1的终端节点策略如下:
入口:服务列表 > VPC终端节点 > 单击对应VPC终端节点ID(OBS双端固定的终端节点) > 策略 > 编辑
[
{
"Action": [
"obs:object:GetObject"
],
"Resource": [
"obs:*:*:object:mybucket/*"
],
"Effect": "Allow"
},
{
"Action": [
"obs:object:GetObject"
],
"Resource": [
"obs:*:*:object:mybucket/myobject"
],
"Effect": "Deny"
}
]
配置示例三:同时配置VPC终端节点策略与桶策略
场景描述:
只允许VPC1内的服务器上传/下载桶mybucket中的对象,并且只允许桶mybucket中的对象被VPC1内的服务器上传/下载。
其中VPC1的ID为:4dad1f75-0361-4aa4-ac75-1ffdda3a0fec。
配置方法:
配置VPC1的终端节点策略如下:
入口:服务列表 > VPC终端节点 > 单击对应VPC终端节点ID(OBS双端固定的终端节点) > 策略 > 编辑
[
{
"Action": [
"obs:object:GetObject",
"obs:object:PutObject"
],
"Resource": [
"obs:*:*:object:mybucket/*"
],
"Effect": "Allow"
}
]
配置桶mybucket的桶策略如下:
需要配置两个桶策略:桶策略1:允许VPC1内的服务器上传/下载桶mybucket中的对象。其中statementId可自定义,domainId和userId需要设置为允许上传下载的账号ID和用户ID。
{
"Statement": [
{
"Sid": "statementId",
"Effect": "Allow",
"Principal": {
"ID": ["domain/domainId:user/userId"]
},
"Action": ["GetObject", "PutObject"],
"Resource": ["mybucket/*"],
"Condition": {
"StringEquals": {
"SourceVpc": ["4dad1f75-0361-4aa4-ac75-1ffdda3a0fec"]
}
}
}
]
}
桶策略2:除了VPC1外的其他VPC内的服务器均不能操作桶mybucket及桶中的对象。其中DenyReqNotFromVpc可自定义。
{
"Statement": [
{
"Sid": "DenyReqNotFromVpc",
"Effect": "Deny",
"Principal": {
"ID": ["*"]
},
"Action": "*",
"Resource": ["mybucket", "mybucket/*"],
"Condition": {
"StringNotEqual": {
"SourceVpc": ["4dad1f75-0361-4aa4-ac75-1ffdda3a0fec"]
}
}
}
]
}
说明
设置上述桶策略后,被授权的IAM用户可以正常通过SDK或API进行上传下载操作。如果希望在控制台或OBS Browser+上进行上传下载,还需要在IAM权限中额外配置obs:bucket:ListAllMyBuckets和obs:bucket:ListBucket权限,否则登录控制台和OBS Browser+时会报错,无法看到桶和桶内对象。
配置示例四:同时配置VPC终端节点策略与桶策略后,再授权其他云服务访问桶
场景描述:
当同时设置了VPC1的终端节点策略与桶mybucket的桶策略后,由于双端固定的限制,其它云服务包括OBS就无法访问桶mybucket。如果想要授权其它云服务能够访问桶mybucket,可以通过委托授权的方式。
其中VPC1的ID为:4dad1f75-0361-4aa4-ac75-1ffdda3a0fec。
配置方法:
配置VPC1的终端节点策略如下:
只允许VPC1内的服务器上传/下载桶mybucket中的对象。
入口:服务列表 > VPC终端节点 > 单击对应VPC终端节点ID(OBS双端固定的终端节点) > 策略 > 编辑
[
{
"Action": [
"obs:object:GetObject",
"obs:object:PutObject"
],
"Resource": [
"obs:*:*:object:mybucket/*"
],
"Effect": "Allow"
}
]
创建IAM委托,委托其它云服务访问桶mybucket。例如,委托OBS,绑定系统策略OBS FullAccess,也可以创建自定义策略并绑定该委托。
配置桶mybucket的桶策略如下:
只允许桶mybucket中的对象被VPC1内的服务器或者委托名为testAgencyName所对应授权的云服务访问桶mybucket中的对象。其中委托名以2实际创建的IAM委托名称为准。{
"Statement": [
{
"Effect": "Allow",
"Principal": {"ID": ["*"]},
"Action": ["*"],
"Resource": ["mybucket/*"],
"Condition": {
"StringEquals": {
"SourceVpc": ["4dad1f75-0361-4aa4-ac75-1ffdda3a0fec"]
}
}
},
{
"Effect": "Allow",
"Principal": {"ID": ["*"]},
"Action": ["*"],
"Resource": ["mybucket/*"],
"Condition": {
"StringEquals": {
"ServiceAgency": ["testAgencyName"]
}
}
}
]
}
同时,桶策略也可按如下配置达到同样的效果:{
"Statement": [
{
"Effect": "Deny",
"Principal": {"ID": ["*"]},
"Action": ["*"],
"Resource": ["mybucket/*"],
"Condition": {
"StringNotEquals": {
"SourceVpc": ["4dad1f75-0361-4aa4-ac75-1ffdda3a0fec"],
"ServiceAgency": ["testAgencyName"]
}
}
}
]
}