其他分享
首页 > 其他分享> > RGW使用Policy策略介绍

RGW使用Policy策略介绍

作者:互联网

Bucket Policy 是基于资源的授权策略。操作简单,Bucket 拥有者直接可以进行访问授权。Bucket Policy 支持向其他账号的 RAM 用户授予访问权限,以及向匿名用户授予带特定IP条件限制的访问权限。

环境信息

ceph 12.2.12

boto3 sdk 使用案例如下:

import json
from boto3.session import Session

endpoint = 'http://server_ip'
access_key = 'your key'
secret_key = 'your secret key'

policy = {
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {"AWS": ["arn:aws:iam:::user/fred"]},
    "Action": "s3PutObjectAcl",
    "Resource": [
      "arn:aws:s3:::happybucket/*"
    ]
  }]
}

session = Session(access_key, secret_key)
client = session.client('s3', endpoint_url=endpoint)
client.put_bucket_policy(Bucket='happybucket', Policy=json.dumps(policy))

# 查看策略
client.get_bucket_policy(Bucket='happybucket')

特别提醒

策略参数

warning::备注

ceph RGW 当前不支持aws的account-ID,用tenant代替,如果没有区分租户,则为空即可

当前支持策略

当前支持 actions 如下:

当前支持 condition keys 如下

常见场景使用

场景一: 某公司A,希望合作伙伴可以访问指定Bucket下指定目录data下文件

api方式

data = {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {"AWS": "arn:aws:iam:::user/cap"},
            "Action": [ 's3:GetObject'],
            "Resource": [
                "arn:aws:s3:::<Bucket>/data/*",
            ]
        }
    ]
}

场景二:某公司A,希望内部公开文档存放在Bukcet 的 public目录下,员工在办公室可以直接访问,假设办公室出口IP为 ip1、ip2

api方式

data = {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {"AWS": "*"},
            "Action": [ 's3:GetObject'],
            "Resource": [
                "arn:aws:s3:::<Bucket>/public/*",
            ],
            "Condition": {
                "IpAddress": {"aws:SourceIp": [
                    "<ip1>/32",
                    "<ip2>/32"
                    ]
                }
            }
        }
    ]
}

多条件判定

总结如下

标签:策略,RGW,s3,Bucket,aws,policy,key,Policy,arn
来源: https://www.cnblogs.com/maycap/p/15421623.html