首页 > 其他分享 >Ceph Reef(18.2.X)之对象访问策略配置

Ceph Reef(18.2.X)之对象访问策略配置

时间:2024-09-01 22:47:52浏览次数:10  
标签:rgw s3 ceph141 Ceph 访问 yinzhengjie Reef 18.2 root

                                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

目录

一.对象存储概述

1.对象存储的访问方式

如上图所示,前面我们学习基于s3cmd和swift均可以使用命令后正常访问对象存储网关,但作为OSS对象存储,也支持基于"http|https"方式来访问对象。

如下图所示,默认情况下WebUI是拒绝访问的,因为我们需要通过专用的访问策略进行功能验证。

对于OSS存储来说,我们资源对象访问策略,它是以存储桶"BACKUET"为基础单位,安全策略等粒度有些大。


参考链接:
	https://docs.ceph.com/en/reef/radosgw/
	https://docs.ceph.com/en/reef/radosgw/bucketpolicy/

2.基于http方式访问对象存储注意事项

- 资源对象的访问方式:
		http还是https,依赖于rgw的基本配置。
		如果是s3的话,需要在配置文件设定的时候,启用https功能。

- 资源对象的访问控制:
		通过定制策略的方式来实现,比如上传策略,下载策略,修改策略等。
		
- 资源对象的跨域问题:
		通过定义cors的方式来实现。
		对于互联网中的资源对象,浏览器在访问的时候,默认会有跨域的安全限制。
		比如"localhost"和"127.0.0.1"浏览器默认并不是同一个主机,尽管ip和域名可以进行相互解析。
		如果想要启用域名和ip相同的话,则需要解决跨域问题,这是作为开发的基础知识点。
		 
- 资源对象在浏览器端端缓存机制:
		rgw端基本配置定制,因为我们对象存储大多是不经常变动的数据,比如图片,视频,音乐,文件等。
		
		
		
推荐阅读:
	https://docs.ceph.com/en/latest/radosgw/
	https://docs.ceph.com/en/latest/radosgw/bucketpolicy/
	https://docs.ceph.com/en/latest/radosgw/s3/

3.查看存储桶默认策略

[root@ceph141 ~]# swift list
yinzhengjie-rgw
[root@ceph141 ~]# 
[root@ceph141 ~]# s3cmd info s3://yinzhengjie-rgw
s3://yinzhengjie-rgw/ (bucket):
   Location:  default
   Payer:     BucketOwner
   Expiration Rule: none
   Policy:    none
   CORS:      none
   ACL:       尹正杰: FULL_CONTROL
[root@ceph141 ~]# 
[root@ceph141 ~]# swift stat yinzhengjie-rgw
                      Account: v1
                    Container: yinzhengjie-rgw
                      Objects: 3
                        Bytes: 983
                     Read ACL:
                    Write ACL:
                      Sync To:
                     Sync Key:
                  X-Timestamp: 1725035977.26537
X-Container-Bytes-Used-Actual: 12288
             X-Storage-Policy: default-placement
              X-Storage-Class: STANDARD
                Last-Modified: Fri, 30 Aug 2024 16:39:37 GMT
                   X-Trans-Id: tx00000fdf1f164b67a4cd0-0066d1fa85-12179-default
       X-Openstack-Request-Id: tx00000fdf1f164b67a4cd0-0066d1fa85-12179-default
                Accept-Ranges: bytes
                 Content-Type: text/plain; charset=utf-8
                   Connection: Keep-Alive
[root@ceph141 ~]# 

二.定制策略

1.定制访问策略文件

[root@ceph141 ~]# cat yinzhengjie-policy.json
{
  "Statement": [{
    "Effect": "Allow",
    "Principal": "*",
    "Action": ["s3:GetObject"],
    "Resource": "*"
  }]
}
[root@ceph141 ~]# 

相关参数说明:
	Statement:
		表示定义属性。
		
	Effect:
		指定权限,比如: Allow,Deny等。
	
	Principal:
		主体人,主要针对哪些用户,此处为指定"*"表示所有用户,看官网的意思是可以指定具体的用户进行策略配置。
		
	Action:	
		对资源对象可以支持的操作,详情请参考官网。
		https://docs.ceph.com/en/latest/radosgw/bucketpolicy/#limitations

	Resource:
		策略管理等资源对象,其中"*"表示的是所有资源。如果想要匹配部分对象,可以使用列表的方式,比如: ["*.jpg","*.png"]。

2.应用访问策略

	1.应用访问策略
[root@ceph141 ~]# cat /root/yinzhengjie-policy.json 
{
  "Statement": [{
    "Effect": "Allow",
    "Principal": "*",
    "Action": "s3:GetObject",
    "Resource": "*"
  }]
}
[root@ceph141 ~]# 
[root@ceph141 ~]# s3cmd setpolicy /root/yinzhengjie-policy.json s3://yinzhengjie-rgw
s3://yinzhengjie-rgw/: Policy updated
[root@ceph141 ~]# 

	2.检查访问策略是否生效
[root@ceph141 ~]# s3cmd info s3://yinzhengjie-rgw  # 注意观察Policy字段
s3://yinzhengjie-rgw/ (bucket):
   Location:  default
   Payer:     BucketOwner
   Expiration Rule: none
   Policy:    {
  "Statement": [{
    "Effect": "Allow",
    "Principal": "*",
    "Action": "s3:GetObject",
    "Resource": "*"
  }]
}

   CORS:      none
   ACL:       尹正杰: FULL_CONTROL
[root@ceph141 ~]# 
[root@ceph141 ~]# swift stat yinzhengjie-rgw  # 通过swift工具观察存储桶状态貌似没啥变化。
                      Account: v1
                    Container: yinzhengjie-rgw
                      Objects: 3
                        Bytes: 983
                     Read ACL:
                    Write ACL:
                      Sync To:
                     Sync Key:
                  X-Timestamp: 1725035977.26537
X-Container-Bytes-Used-Actual: 12288
             X-Storage-Policy: default-placement
              X-Storage-Class: STANDARD
                Last-Modified: Sat, 31 Aug 2024 00:05:26 GMT
                   X-Trans-Id: tx00000071b010f5f594445-0066d25e64-14897-default
       X-Openstack-Request-Id: tx00000071b010f5f594445-0066d25e64-14897-default
                Accept-Ranges: bytes
                 Content-Type: text/plain; charset=utf-8
                   Connection: Keep-Alive
[root@ceph141 ~]# 


	3.客户端测试访问,比如在mac终端测试效果如下【浏览器访问的话会直接下载host文件,注意此处我的协议为http哈~】
bogon:~ yinzhengjie$ curl http://ceph142/yinzhengjie-rgw/etc/hosts
127.0.0.1 localhost
127.0.1.1 yinzhengjie

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.0.0.141 ceph141
10.0.0.142 ceph142
10.0.0.143 ceph143
172.30.100.142 www.yinzhengjie.com
bogon:~ yinzhengjie$  

3.应用跨域规则【可选操作】

	1.定义跨域规则文件
[root@ceph141 ~]# cat > yinzhengjie-rules.xml <<EOF
<CORSConfiguration>
  <CORSRule>
    <ID>Allow everything</ID>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>    
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedHeader>*</AllowedHeader>    
    <MaxAgeSeconds>30</MaxAgeSeconds>    
  </CORSRule>
</CORSConfiguration>
EOF
[root@ceph141 ~]# 

	2.应用跨域规则
[root@ceph141 ~]# s3cmd setcors yinzhengjie-rules.xml s3://yinzhengjie-rgw

	3.查看存储桶信息
[root@ceph141 ~]# s3cmd info s3://yinzhengjie-rgw
s3://yinzhengjie-rgw/ (bucket):
   Location:  default
   Payer:     BucketOwner
   Expiration Rule: none
   Policy:    {
  "Statement": [{
    "Effect": "Allow",
    "Principal": "*",
    "Action": "s3:GetObject",
    "Resource": "*"
  }]
}

   CORS:      <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><CORSRule><ID>Allow everything</ID><AllowedMethod>GET</AllowedMethod><AllowedMethod>PUT</AllowedMethod><AllowedMethod>DELETE</AllowedMethod><AllowedMethod>HEAD</AllowedMethod><AllowedMethod>POST</AllowedMethod><AllowedOrigin>*</AllowedOrigin><AllowedHeader>*</AllowedHeader><MaxAgeSeconds>30</MaxAgeSeconds></CORSRule></CORSConfiguration>
   ACL:       尹正杰: FULL_CONTROL
[root@ceph141 ~]# 

三.对象存储的其他访问方式

1.基于s3cmd方式访问

推挤阅读:
	https://www.cnblogs.com/yinzhengjie/p/18377291#三s3cmd工具上传视频访问验证

2.基于swift方式访问

推荐阅读:
	https://www.cnblogs.com/yinzhengjie/p/18389709

3.基于python程序访问

推挤阅读:	
	https://www.cnblogs.com/yinzhengjie/p/18387824

标签:rgw,s3,ceph141,Ceph,访问,yinzhengjie,Reef,18.2,root
From: https://www.cnblogs.com/yinzhengjie/p/18391893

相关文章

  • ceph:纯手工配置osd磁盘及服务
     #######################################################################准备ceph用户环境(shell、homedir)准备ceph的相关父目录准备ceph.confceph.client.admin.keyring主备相同容量的整个磁盘、一个裸分区、一个lvm逻辑分区;或一个posix文件系统目录特别提醒:ceph用户需......
  • ceph:纯手动配置mon
    准备:mon的keyringcd/etc/cephceph-authtool-Cceph.keyring-g-n'mon.'--capmon'allow*'--caposd'allow*'--capmgr'allow*'--capmds'allow*'ceph-authtoolceph.keyring-l#vi编辑这个ceph.key......
  • Launcher start App WINDOWING_MODE_FREEFORM
    WINDOWING_MODE_FREEFORMstartApp核心思路:这个windowmode需要从FullScreen--->Freeform,需要在startActivity时候携带相关相关参数,把windowmode和launchBounds进行设置。AndroidT+++b/frameworks/base/core/java/android/app/Instrumentation.java@@-1798,6+1798,7......
  • Openstack 与 Ceph集群搭建(完结): 配置Ceph作为Openstack后端存储
    文章目录参考文章1.前置任务1.0修改Openstack配置文件1.1.完成搭建的Ceph集群1.2.完成存储pool的创建1.3.针对OpenStack服务提供的Cephkeyring1.3.1.生成glance的keyring1.3.2.生成Cinder的keyring1.3.3.生成Cinder-backup的Keyring1.3.4.生成Nova的keyring2......
  • ceph集群
    环境3台centos 8机器,每台机器上边3个磁盘机器名:ceph1、ceph2、ceph3ceph-ansible集群部署在ceph1上边准备好ceph-ansiblegitclonehttps://github.com/ceph/ceph-ansible.gitcdceph-ansiblegitcheckoutstable-5.0#centos7用4.0pip3install-rrequirements.txt......
  • ceph-messenger模块代码走读(1)
    messenger代码走读messenger的使用以mgr代码为例,看看messengrr的初始化和启动。//构造函数,初始化一个client_messenger对象。MgrStandby::MgrStandby(intargc,constchar**argv):Dispatcher(g_ceph_context),monc{g_ceph_context,poolctx},client_messenger(M......
  • 探索 Kubernetes 持久化存储之 Rook Ceph 初窥门径
    在Kubernetes生态系统中,持久化存储是支撑业务应用稳定运行的基石,对于维护整个系统的健壮性至关重要。对于选择自主搭建Kubernetes集群的运维架构师来说,挑选合适的后端持久化存储解决方案是关键的选型决策。目前,Ceph、GlusterFS、NFS、Longhorn和openEBS等解决方案已在业界......
  • ceph如何进行数据的读写(2)
    本章摘要上文说到,librados/IoctxImpl.cc中调用objecter_op和objecter的op_submit函数,进行op请求的封装、加参和提交。本文详细介绍相关函数的调用。osdc中的操作初始化Op对象,提交请求设置Op对象的时间,oid,操作类型等信息。//osdc/Objector.h//mid-levelhelpersOp*pr......
  • ceph如何进行数据的读写(3)
    本章摘要上文说到,osdc中封装请求,使用message中的相关机制将请求发送出去。本文详细介绍osd服务端如何进行请求的接收。osd初始化osd启动时,定义了message变量ms_public,该变量绑定public网络,负责接收客户端的请求。ms_public会启动对应的线程进行接收,并指定接收函数。//ceph_......
  • ceph如何进行数据的读写(1)
    版本ceph版本为17.ceph如何进行读写接口的实现Ceph的客户端通过librados的接口进行集群的访问,这里的访问包括:1)对集群的整体访问2)对象的访问两类接口,这套接口(API)包括C、C++和Python的实现,接口通过网络实现对Ceph集群的访问。在客户端层面,可以在自己的程序中调用该接口,从而集......