专栏首页腾讯云技术服务团队COS限制VPC 内网IP访问之实践
原创

COS限制VPC 内网IP访问之实践

在一个VPC网络中,由于特殊需求,我们需要针对VPC网内某一台或多台机器实现COS的限制访问或允许访问,对于该问题我们如何实现呢?

下面就带大家来实际操作一下。

首先,创建同一VPC下的两台CVM主机

CVM1:10.5.0.6(内网IP)

CVM2:10.5.0.12(内网IP)

然后创建一个bucket,并进入权限管理

添加描述

复制策略,我们这里要禁用CVM1内网IP为10.5.0.6主机的访问GetBucket

{
  "Statement": [
    {
      "Action": [
        "name/cos:GetBucket"
      ],
      "Effect": "Deny",
      "Principal": {
        "qcs": [
          "qcs::cam::anyone:anyone"
        ]
      },
      "Resource": [
        "qcs::cos:ap-beijing:uid/1251956900:sunweitest-1251956900/*"
      ],
      "Condition": {
        "ip_equal": {
          "qcs:ip": [
            "10.5.0.6"
          ]
        }
      }
    }
  ],
  "version": "2.0"
}

接下来我们尝试在10.5.0.6主机内发起访问

在10.5.0.12主机内发起访问

访问成功

测试正常,说明getbucket被成功按IP进行拦截了

但这里有个问题,内网IP是不唯一的,也就是说其他VPC内的相同内网IP的主机如果发起请求,也可以导致相同的效果。所以,我们要加上VPC的实例限制。

加入VPC实例限制,策略如下

 {
      "Principal": {
        "qcs": [
          "qcs::cam::anyone:anyone"
        ]
      },
      "Effect": "Allow",
      "Action": [
        "name/cos:GetBucket"
      ],
      "Resource": [
        "qcs::cos:ap-beijing:uid/1251956900:sunweitest-1251956900/*"
      ],
      "Condition": {
        "string_equal_if_exist": {
          "vpc:vpc": [
            "vpc-31qrmn1e"
          ],
          "vpc:accepter_vpc": [
            "vpc-31qrmn1e"
          ],
          "vpc:requester_vpc": [
            "vpc-31qrmn1e"
          ]
        }
      }
    }

我们尝试在10.5.0.6主机内再次发起访问

在10.5.0.12主机内再次发起访问

测试OK

完整的策略如下

{
  "Statement": [
    {
      "Action": [
        "name/cos:GetBucket"
      ],
      "Effect": "Deny",
      "Principal": {
        "qcs": [
          "qcs::cam::anyone:anyone"
        ]
      },
      "Resource": [
        "qcs::cos:ap-beijing:uid/1251956900:sunweitest-1251956900/*"
      ],
      "Condition": {
        "ip_equal": {
          "qcs:ip": [
            "10.5.0.6"
          ]
        }
      }
    },
    {
      "Principal": {
        "qcs": [
          "qcs::cam::anyone:anyone"
        ]
      },
      "Effect": "Allow",
      "Action": [
        "name/cos:GetBucket"
      ],
      "Resource": [
        "qcs::cos:ap-beijing:uid/1251956900:sunweitest-1251956900/*"
      ],
      "Condition": {
        "string_equal_if_exist": {
          "vpc:vpc": [
            "vpc-31qrmn1e"
          ],
          "vpc:accepter_vpc": [
            "vpc-31qrmn1e"
          ],
          "vpc:requester_vpc": [
            "vpc-31qrmn1e"
          ]
        }
      }
    }
  ],
  "version": "2.0"
}

注意:目前上海园区暂不支持该方法,需要提交工单申请白名单实现

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • COS/CDN跨域功能设置与验证

    在工单和客户的交流过程中,经常会看到有人问,我配置了CDN、COS的跨域,但是为什么没有生效呢。怎么来验证配置的是否有效呢。

    腾讯云技术服务团队
  • SCF实现python爬虫之PyQuery的功能

    PyQuery库是一个很强大而又灵活的网页解析库,是实现爬虫功能的很好选择。那么在SCF(无服务器云函数)中是否可以实现呢?

    腾讯云技术服务团队
  • 通过Fiddler抓包来排查COS的调用问题

    而对于使用SDK或者发布后的应用,一般排障方法需要提供requestid,但另外还有一种方式无需修改代码便可以获取全部信息而且具有调试功能的手段,那就是“抓包”...

    腾讯云技术服务团队
  • [设计模式]之八:中介者模式

    用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

    wOw
  • Java描述设计模式(16):代理模式

    知了一笑
  • 使用Java JUnit框架里的@Rule注解的用法举例

    Suppose you need to repeatedly execute some test method in your unit test case, ...

    Jerry Wang
  • OpenStack Apis Authenticate (Token ID&Tenant ID)

    tanmx
  • java多线程学习(2)-锁的使用

    在说怎么使用锁之前我想先说下AQS(AbstractQueuedSynchronized),基本上很多同步类都依赖它,AQS维护了一个volatile int ...

    Simon、hao
  • MySQL分布式高可用的一个补充

    前几天码了一篇迁移到MySQL的架构演进的文章,迁移到MySQL的架构演进(一),收到的反馈还不少,看来大家碰到的都是共性的问题。

    jeanron100
  • 超越 Cookie:当今的浏览器端数据存储方案[每日前端夜话0xA3]

    当 cookie 被首次引入时,它是浏览器保存数据的唯一方式。之后又有了很多新的选择:Web Storage API、IndexedDB 和 Cache API...

    疯狂的技术宅

扫码关注云+社区

领取腾讯云代金券