自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Ceph IAM多租戶功能介紹與實踐

存儲 存儲架構(gòu)
在本文中,我們將探討如何通過引入 IAM 賬戶來提升 Ceph 的多租戶功能。Ceph 是一個開源的分布式存儲系統(tǒng),廣泛用于大規(guī)模數(shù)據(jù)存儲,提供高性能和高可靠性。隨著多租戶需求的增加,在 Ceph Squid 版本中,Ceph 通過 IAM 賬戶的引入,進(jìn)一步增強了其在多租戶環(huán)境中的管理。

介  紹

在本文中,我們將探討如何通過引入 IAM 賬戶來提升 Ceph 的多租戶功能。Ceph 是一個開源的分布式存儲系統(tǒng),廣泛用于大規(guī)模數(shù)據(jù)存儲,提供高性能和高可靠性。隨著多租戶需求的增加,在 Ceph Squid 版本中,Ceph 通過 IAM 賬戶的引入,進(jìn)一步增強了其在多租戶環(huán)境中的管理。

Ceph 通過 IAM 賬戶的引入,提供了更精細(xì)的訪問控制和資源管理。管理員可以為每個租戶創(chuàng)建獨立的 IAM 賬戶,并根據(jù)需要分配相應(yīng)的權(quán)限。這種機制確保了資源的隔離,避免了租戶之間的沖突和安全風(fēng)險。

IAM API 與 AWS S3 完全兼容,并通過對象網(wǎng)關(guān) API 端點提供。這樣,IAM 帳戶管理員(根帳戶)不需要訪問 Ceph 內(nèi)部 radosgw-cli 或 adminOPS API 的權(quán)限,從而在保持安全性的同時增強訪問能力。

隨著 IAM 賬戶的引入,我們新增了一個用戶角色,代表租戶管理員,即 IAM 根賬戶用戶。

  • Ceph 對象存儲管理員:負(fù)責(zé)系統(tǒng)范圍的管理和創(chuàng)建 IAM 賬戶。
  • IAM 根賬戶用戶:賬戶管理員。管理特定租戶/IAM 賬戶內(nèi)的資源,使用通過 RGW 端點提供的 IAM API。
  • S3 最終用戶:在 root 賬戶用戶授予的權(quán)限范圍內(nèi)進(jìn)行操作。

圖片圖片

實踐:在 Ceph 中使用 IAM 賬戶

前提條件:Ceph Squid 或更高版本,并運行 RGW/對象存儲服務(wù)。 

下面提供了一個 RGW 配置的案例文件,用于為 RGW 設(shè)置 RGW 服務(wù)和 Ingres 服務(wù)(負(fù)載均衡)。

# cat << EOF > /root/rgw-ha.spec
---
service_type: ingress
service_id: rgw.rgwsrv
service_name: ingress.rgw.rgwsrv
placement:
  count: 2
  hosts:
  - ceph-node-02.cephlab.com
  - ceph-node-03.cephlab.com
spec:
  backend_service: rgw.rgwsrv
  first_virtual_router_id: 50
  frontend_port: 80
  monitor_port: 1497
  virtual_ip: 192.168.122.100
---
service_type: rgw
service_id: rgwsrv
service_name: rgw.rgwsrv
placement:
  count: 3
  hosts:
  - ceph-node-03.cephlab.com
  - ceph-node-00.cephlab.com
  - ceph-node-01.cephlab.com
spec:
  rgw_frontend_port: 8080
  rgw_realm: realm1
  rgw_zone: zone1
  rgw_zonegroup: zonegroup1
EOF
 
# ceph orch apply -i /root/rgw-ha.spec

此處使用了192.168.122.100作為訪問 IP ,該IP解析的域名為s3.zone1.cephlab.com 。

如何創(chuàng)建和設(shè)置 IAM賬戶作為對象存儲管理員

下面將逐步完成配置 IAM 賬戶、創(chuàng)建用戶和應(yīng)用權(quán)限的步驟。

創(chuàng)建 IAM 賬戶

我們將會使用 radosgw-admin 命令行工具來創(chuàng)建一個 IAM 賬戶,用于分析 Web 應(yīng)用程序;當(dāng)然也可以使用 AdminOPS API。

在這個案例中,我們首先創(chuàng)建 IAM 賬戶,然后定義這個特定 IAM 賬戶可以從全局 RGW/對象存儲系統(tǒng)中訪問的資源。

# radosgw-admin account create --account-name=analytic_app

該命令創(chuàng)建一個名為`analytic_app`的賬戶。該賬戶使用默認(rèn)配額和限制進(jìn)行初始化,之后可能會進(jìn)行調(diào)整。使用 IAM 賬戶時,會創(chuàng)建一個 RGW 賬戶 ID,當(dāng)我們需要引用它時,它將成為主體 ARN 的一部分,

例如:arn:aws:iam::RGW00889737169837717:user/name。

輸出:

{
    "id": "RGW00889737169837717",
    "tenant": "analytics",
    "name": "analytic_app",
    "max_users": 1000,
    ...
}

修改 IAM 賬戶限制

作為 RGW 管理員,在此示例中,我們調(diào)整賬戶的最大用戶數(shù):

# radosgw-admin account modify --max-users 10 --account-name=analytic_app

這可確保 IAM 賬戶最多可以創(chuàng)建十個用戶。根據(jù)我們需求,還可以管理組、密鑰、策略、存儲桶等的最大數(shù)量。

設(shè)置 IAM 賬戶配額

作為創(chuàng)建 IAM 賬戶的一部分,我們可以啟用并定義賬戶配額來控制資源使用。在本例中,我們將賬戶的最大存儲使用量配置為 20GB,我們還可以配置與每個存儲桶的對象計數(shù)相關(guān)的其他配額:

# radosgw-admin quota set --quota-scope=account --account-name=analytic_app --max-size=20G
# radosgw-admin quota enable --quota-scope=account --account-id=RGW00889737169837717

為新 IAM 賬戶創(chuàng)建賬戶根用戶

每個 IAM 賬戶均由 root 用戶管理,該用戶對賬戶內(nèi)的所有資源擁有默認(rèn)權(quán)限。與普通用戶和角色一樣,帳戶和帳戶 root 用戶必須由管理員使用 radosgw-admin 或 Admin Ops API 創(chuàng)建。

要為analytic_app帳戶創(chuàng)建帳戶根用戶,運行以下命令:

# radosgw-admin user create --uid=root_analytics_web --display-name=root_analytics_web --account-id=RGW00889737169837717 --account-root --gen-secret --gen-access-key

輸出示例:

{
    "user_id": "root_analytics_web",
    "access_key": "1EHAKZAXKPV6LU65QS2R",
    "secret_key": "AgXK1BqPOP25pt0HvERDts2yZtFNfF4Mm8mCnoJX",
    ...
}

根賬戶用戶現(xiàn)在已準(zhǔn)備好在 IAM 賬戶內(nèi)創(chuàng)建和管理用戶、組、角色和權(quán)限。這些資源可以通過 RGW 提供的 IAM API 進(jìn)行管理和管理。此時,RGW 管理員可以將 IAM 帳戶的根用戶的憑證提供給負(fù)責(zé)該帳戶的人員。該人員可以使用 RGW 提供的 IAM API 執(zhí)行與其賬戶相關(guān)的所有管理操作,這完全由 RGW 管理員操作。

以下是 IAM 根賬戶無需 RGW 管理員權(quán)限即可執(zhí)行的一些操作:

  • 創(chuàng)建、修改和刪除用戶
  • 管理賬戶用戶訪問和ak,sk密鑰
  • 管理 IAM 策略
  • 管理 IAM 用戶策略
  • 管理 IAM 組
  • 創(chuàng)建、修改和刪除 OIDC providers
  • 創(chuàng)建、修改和刪除 Notification Topics

通過 IAM API 創(chuàng)建用戶、組和角色作為 IAM 根賬戶

在 IAM 賬戶中創(chuàng)建新的 IAM 用戶

現(xiàn)在,我們將使用上一步中生成的 IAM 根賬戶的訪問密鑰來配置 AWS CLI。默認(rèn)情況下,IAM API 在 Ceph 對象網(wǎng)關(guān) (RGW) 端點上可用。在此示例中,

我們將s3.zone1.cephlab.com作為訪問域名,提供對 API 的訪問。

# dnf install awscli -y
# aws configure
AWS Access Key ID [****************dmin]: 1EHAKZAXKPV6LU65QS2R
AWS Secret Access Key [****************dmin]: AgXK1BqPOP25pt0HvERDts2yZtFNfF4Mm8mCnoJX
Default region name [multizg]: zonegroup1
Default output format [json]: json
# aws configure set endpoint_url http://s3.zone1.cephlab.com

將analytics_frontend作為新的 IAM 用戶添加到分析 IAM 賬戶:

# aws iam create-user --user-name analytics_frontend

為新用戶分配訪問的ak與sk密鑰:

# aws iam create-access-key --user-name analytics_frontend

此時用戶無法訪問S3資源。下一步,我們將使用戶能夠訪問資源。以下是嘗試以analytics_frontend用戶身份訪問 S3 命名空間而不附加策略的示例:

# aws --profile analytics_backend s3 ls
argument of type 'NoneType' is not iterable
# aws --profile analytics_backend s3 ls s3://staticfront/
argument of type 'NoneType' is not iterable

為 IAM 用戶提供 S3 資源訪問權(quán)限的選項

有多種方法來授予新 IAM 用戶訪問賬戶中可用的各種資源的權(quán)限,例如 IAM、S3 和 SNS 資源:

  • 附加預(yù)定義的托管策略;托管 IAM 策略可以附加到多個 IAM 實體(用戶、組、角色)并且可以在多個AWS賬戶中重復(fù)使用。
  • 創(chuàng)建自定義內(nèi)聯(lián)用戶或組策略(使用戶成為附加策略的組的一部分)
  • 承擔(dān)現(xiàn)有的 IAM 角色以獲取授予該角色的權(quán)限

圖片

示例 1. 將托管策略附加到新 IAM 用戶

在第一個示例中,我們將使用托管策略policy/AmazonS3FullAccess來允許analytics_frontend用戶完全訪問 IAM 賬戶 S3 資源:

# aws iam attach-user-policy --user-name analytics_frontend --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess

附加托管策略后,我們可以創(chuàng)建 IAM 賬戶的 S3 資源,例如:

# aws --profile analytics_frontend s3 mb s3://staticfront
make_bucket: staticfront

示例 2. 將托管策略附加到組并將 IAM 用戶添加到該組

首先創(chuàng)建一個 IAM 組來管理需要類似角色的用戶的權(quán)限。在這種情況下,我們正在為前端監(jiān)控團(tuán)隊創(chuàng)建一個組。

# aws iam create-group --group-name frontend-monitoring

將策略附加到組:在本示例中,我們將向組附加 S3 只讀訪問策略,以便所有用戶繼承權(quán)限并可以以只讀模式訪問 S3 資源。不允許對 S3 數(shù)據(jù)集進(jìn)行修改。

# aws iam attach-group-policy --group-name frontend-monitoring --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

檢查策略是否已成功附加到組:

# aws iam list-attached-group-policies --group-name frontend-monitoring
{
    "AttachedPolicies": [
        {
            "PolicyName": "AmazonS3ReadOnlyAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
        }
    ]
}

使用其密鑰創(chuàng)建將成為組成員的單獨 IAM 用戶。

# aws iam create-user --user-name mon_user1
# aws iam create-user --user-name mon_user2
# aws iam create-access-key --user-name mon_user1
# aws iam create-access-key --user-name mon_user2

將上一步中創(chuàng)建的用戶添加到`frontend-monitoring`組,以便他們繼承權(quán)限。

# aws iam get-group --group-name frontend-monitoring
{
    "Users": [
        {
            "Path": "/",
            "UserName": "mon_user1",
            "UserId": "fe09d373-08e8-4b61-bffa-6f65eaf11e56",
            "Arn": "arn:aws:iam::RGW60952341557974488:user/mon_user1"
        },
        {
            "Path": "/",
            "UserName": "mon_user2",
            "UserId": "29c57263-1293-4bdf-90e4-a784859f12ef",
            "Arn": "arn:aws:iam::RGW60952341557974488:user/mon_user2"
        }
    ],
    "Group": {
        "Path": "/",
        "GroupName": "frontend-monitoring",
        "GroupId": "a453d5af-4e25-401c-be76-b4075419cc94",
        "Arn": "arn:aws:iam::RGW60952341557974488:group/frontend-monitoring"
    }
}

確認(rèn)兩個用戶都是該組的一部分:

# aws iam create-user --user-name static_ro
# aws iam create-access-key --user-name static_ro

示例 3. 創(chuàng)建自定義內(nèi)聯(lián)策略并將其附加到特定用戶

此示例演示了創(chuàng)建內(nèi)聯(lián)策略并將其附加到 IAM 中的特定用戶。內(nèi)聯(lián)策略定義單個用戶的權(quán)限并直接嵌入到他們的身份中。雖然此示例重點介紹PutUserPolicy操作,但如果您需要管理這些實體的權(quán)限,則相同的方法也適用于組 (PutGroupPolicy) 和角色 (PutRolePolicy)。

我們首先創(chuàng)建一個將被分配自定義內(nèi)聯(lián)策略的用戶。

# aws iam create-user --user-name static_ro
# aws iam create-access-key --user-name static_ro

我們創(chuàng)建一個包含策略文檔的 JSON 文件來定義自定義內(nèi)聯(lián)策略。此策略允許用戶對特定 S3 存儲桶及其對象執(zhí)行只讀操作。

# cat << EOF > analytics_policy_web_ro.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads"
      ],
      "Resource": [
        "arn:aws:s3:::staticfront/*", 
        "arn:aws:s3:::staticfront"         
      ]
    }
  ]
}
EOF

策略字段說明:

  • Effect:允許指定該策略授予權(quán)限。
  • Action:包括 s3:GetObject、s3:ListBucket 和 s3:ListBucketMultipartUploads,允許用戶讀取數(shù)據(jù)并列出 S3 存儲桶中的對象。
  • Resource:指定 S3 存儲桶 (analytics:staticfront) 及其對象。

使用 put-user-policy 命令將策略附加到用戶。

# aws iam put-user-policy --user-name static_ro --policy-name analytics-static-ro --policy-document file://analytics_policy_web_ro.json

列出附加到用戶的內(nèi)聯(lián)策略以確認(rèn)策略已成功應(yīng)用。

# aws iam list-user-policies --user-name static_ro
{
    "PolicyNames": [
        "analytics-static-ro"
    ]
}

結(jié)  論

 在Ceph Squid 版本,IAM賬戶的引入將極大地提升Ceph在多租戶環(huán)境中的表現(xiàn)。未來,社區(qū)計劃進(jìn)一步優(yōu)化IAM賬戶的功能,提供更多的自定義選項和自動化工具,以滿足不同用戶的需求。

通過引入IAM賬戶,Ceph在多租戶環(huán)境中的靈活性和安全性得到了顯著提升。我們期待這一新功能能夠為用戶帶來更好的體驗,并幫助用戶在復(fù)雜的多租戶環(huán)境中更高效地管理存儲資源。

責(zé)任編輯:武曉燕 來源: 新鈦云服
相關(guān)推薦

2020-10-16 08:57:51

云平臺之多租戶的實踐

2020-09-15 07:00:00

SaaS架構(gòu)架構(gòu)

2024-06-11 12:35:50

2018-07-18 13:29:38

云計算云平臺企業(yè)

2025-01-09 14:39:40

2021-05-06 21:26:00

BcacheCeph存儲

2021-11-22 16:21:28

Kubernetes 運維開源

2023-11-06 08:26:11

Spring微服務(wù)架構(gòu)

2021-12-01 09:00:00

公共云云計算服務(wù)器

2015-01-12 15:26:42

Cephweb管理云平臺

2023-01-03 07:57:27

2022-07-08 08:07:14

SpringJavaMail

2012-09-19 13:32:17

Windows Azu云主機服務(wù)Windows Ser

2023-11-29 08:35:28

群多租戶ES運維

2022-06-20 09:09:26

IDaaSIAM身份即服務(wù)

2023-03-16 08:01:43

CephWeb

2022-09-13 07:14:29

云計算SaaS多租戶

2013-10-15 09:11:26

多租戶云計算Overlay
點贊
收藏

51CTO技術(shù)棧公眾號