• ceph 认证


    目录

    ceph如何进行身份认证的

    密钥环文件是不是只有文件中的key那一行有用

    ceph授权

    ceph用户管理

    图形化连接ceph的对象存储的工具有哪些

    示例


    ceph如何进行身份认证的

    Ceph 使用基于密钥的身份认证来允许客户端和用户访问存储集群。以下是 Ceph 身份认证的基本工作原理:

    1. 创建用户:首先,一个 Ceph 管理员创建一个新的用户(client)或客户端应用程序,这个用户将被授权访问 Ceph 存储集群。

    2. 生成密钥:管理员为该用户生成一个密钥,这个密钥将用于身份验证。

    3. 分配权限:管理员为该用户分配所需的权限,这些权限定义了用户可以执行的操作,如读取、写入、删除等。

    4. 创建密钥环文件:生成的密钥通常被保存在密钥环文件中,该文件包含了用户的密钥和权限信息。

    5. 分发密钥环文件:密钥环文件应该安全地分发给用户或客户端应用程序。只有具有密钥环文件的用户或客户端才能与 Ceph 存储集群通信。

    6. 客户端连接:用户或客户端应用程序使用其密钥环文件来连接到 Ceph 存储集群。当连接时,客户端将提供其密钥以进行身份验证。

    7. 验证:Ceph 存储集群验证客户端提供的密钥是否匹配存储在存储集群中的密钥。如果匹配成功,客户端被授予相应的权限来执行操作。

    8. 执行操作:客户端可以执行其被授权的操作,例如读取、写入、删除、管理等。Ceph 存储集群会根据用户的权限来限制操作。

    需要注意的是,密钥是用户与 Ceph 存储集群进行身份验证的关键,因此必须妥善保护密钥,以防止未经授权的访问。此外,权限也需要适当配置,以确保用户只能执行其需要的操作,以维护存储集群的安全性和完整性。

    密钥环文件是不是只有文件中的key那一行有用

    密钥环文件(keyring file)包含与用户或客户端相关的密钥以及关联的权限信息。在 keyring 文件中,确实只有文件中的 key 部分是密钥的实际值,但是整个文件对于身份认证非常重要,因为它包含了密钥的元数据和上下文信息。

    在 Ceph 的 keyring 文件中,密钥的格式通常如下所示:

    1. [client.用户名]
    2. key = 密钥值
    3. caps 权限信息
    • [client.用户名]:标识客户端用户的名称。
    • key = 密钥值:密钥的实际值,这是用于进行身份验证的部分。
    • caps 权限信息:这里列出了用户或客户端用户的权限信息,规定了用户可以执行的操作。

    示例:

    1. [root@ceph1 ~]# ceph auth list
    2. client.admin
    3. key: AQAngjtlN0a7NRAArCmEv3AiYU+C6tjMlb2Qsg==
    4. caps: [mds] allow *
    5. caps: [mgr] allow *
    6. caps: [mon] allow *
    7. caps: [osd] allow *
    1. client.admin:这是客户端用户的名称,通常是管理员用户。这个用户可以用来执行管理和监控 Ceph 存储集群的操作。

    2. key:这是与客户端用户关联的密钥或令牌。密钥是用来进行身份验证的,以确保只有具有有效密钥的用户可以访问 Ceph 存储集群。在您的示例中,密钥被隐藏了,但它通常会在这里显示。

    3. caps:这些是与客户端用户关联的权限或能力。每一行都列出了客户端用户的一组权限。在您的示例中,"client.admin" 具有以下能力:

      • caps: [mds] allow *:允许执行所有 MDS(Metadata Server)相关操作,这涉及到文件系统的元数据管理。
      • caps: [mgr] allow *:允许执行所有 MGR(Manager)相关操作,这通常包括集群管理任务和性能监控。
      • caps: [mon] allow *:允许执行所有 MON(Monitor)相关操作,用于监视集群状态和配置。
      • caps: [osd] allow *:允许执行所有 OSD(Object Storage Daemon)相关操作,这涉及到数据存储和检索。

    这些权限允许 "client.admin" 用户执行各种 Ceph 存储集群管理任务,包括监视、配置和数据管理。通常情况下,这是一个具有广泛权限的管理员用户,因此需要妥善保护其密钥以防止未经授权的访问。

    ceph授权

    指令一

    1. [ceph@serverc ~]$ ceph auth get-or-create client.docedit \
    2. mon 'allow r' \
    3. osd 'allow rw pool=mypool namespace=docs' \
    4. -o /etc/ceph/ceph.client.docedit.keyring

    这个命令是用于在 Ceph 存储集群中创建一个新的客户端(Client),并定义该客户端的授权策略,最后将客户端密钥保存到指定的密钥文件 (/etc/ceph/ceph.client.docedit.keyring) 中。这个命令的各个部分的含义如下:

    • ceph auth get-or-create client.docedit:这部分命令表示要创建一个名为 client.docedit 的客户端,其中 client.docedit 是客户端的名称,可以根据实际需求进行命名。

    • mon 'allow r':这部分定义了客户端在监视器(monitors)上的访问权限。具体地,它允许客户端对监视器执行只读操作('allow r'),通常用于客户端获取集群状态信息。

    • osd 'allow rw pool=mypool namespace=docs':这部分定义了客户端在对象存储守护程序(OSD)上的访问权限。它允许客户端对 OSD 执行读写操作('allow rw'),并指定了操作的目标池('mypool')和命名空间('docs')。这意味着客户端可以读取和写入名为 mypool 中的对象,该对象位于名为 docs 的命名空间中。

    • -o /etc/ceph/ceph.client.docedit.keyring:最后一部分表示密钥将保存到指定的密钥文件中,即 /etc/ceph/ceph.client.docedit.keyring

    因此,这个命令的作用是创建一个名为 client.docedit 的客户端,并为它定义了在监视器和指定的对象池命名空间上的访问权限。客户端的密钥将保存在 /etc/ceph/ceph.client.docedit.keyring 文件中,以供客户端使用来连接到 Ceph 存储集群,并执行授权的操作。这是一种常见的方式,用于为特定的客户端定义授权策略以满足其特定需求。

    指令二

    1. [root@ceph1 ~]# ceph auth get-or-create client.forrbd \
    2. mon 'profile rbd' \
    3. osd 'profile rbd'
    4. [client.forrbd]
    5. key = AQCMqEFle/cmKhAAckpjEysaVUJ4gr6TjnSZfg==
    6. [root@ceph1 ~]# ceph auth get client.forrbd
    7. exported keyring for client.forrbd
    8. [client.forrbd]
    9. key = AQCMqEFle/cmKhAAckpjEysaVUJ4gr6TjnSZfg==
    10. caps mon = "profile rbd"
    11. caps osd = "profile rbd"
    12. [root@ceph1 ~]#

    这个命令用于在 Ceph 存储集群中创建一个名为 client.forrbd 的客户端,并为该客户端分配了 rbd(RADOS Block Device)的授权配置。这个命令的各个部分的含义如下:

    • ceph auth get-or-create client.forrbd:这部分命令表示要创建一个名为 client.forrbd 的客户端,其中 client.forrbd 是客户端的名称,可以根据实际需求进行命名。

    • mon 'profile rbd':这部分定义了客户端在监视器(monitors)上的访问权限。具体地,它使用了一个叫做 profile rbd 的预定义授权配置。这个配置是 Ceph 预定义的一种简化配置,通常用于允许客户端访问 Ceph 存储集群的 RBD 块设备服务。

    • osd 'profile rbd':这部分定义了客户端在对象存储守护程序(OSD)上的访问权限。它同样使用了 profile rbd 的预定义授权配置,允许客户端执行 RBD 块设备服务的操作。

    这个命令的目的是创建一个专门用于访问 RBD 块设备服务的客户端,并分配了相关的授权策略,以便客户端能够连接到 Ceph 存储集群的 RBD 块设备服务并执行相应的操作。授权配置 profile rbd 是 Ceph 预定义的一种简化配置,它允许客户端访问 RBD 块设备服务而无需手动定义详细的授权策略。

     指令三

    1. ceph auth get-or-create client.formyapp2 \
    2. mon 'allow r'\
    3. osd 'allow rw pool=myapp'

    此命令的含义如下:

    • ceph auth get-or-create client.formyapp2:这部分命令表示要创建一个名为 client.formyapp2 的客户端,其中 client.formyapp2 是客户端的名称。

    • mon 'allow r':这一部分定义了客户端在监视器(monitors)上的只读权限。

    • osd 'allow rw pool=myapp':这一部分定义了客户端在对象存储守护程序(OSD)上的读写权限,并指定了操作的目标池('myapp')。

    • -o /etc/ceph/ceph.client.formyapp2.keyring:最后一部分表示客户端的密钥将保存在指定的密钥文件 (/etc/ceph/ceph.client.formyapp2.keyring) 中,以供客户端使用来连接到 Ceph 存储集群并执行授权的操作。

    指令四

    1. [ceph@serverc 〜]$ ceph auth get-or-create client.formyapp3 \
    2. mon 'allow r' \
    3. osd 'allow rw object_prefix pref'
    • ceph auth get-or-create client.formyapp3:这部分命令表示要创建一个名为 client.formyapp3 的客户端,其中 client.formyapp3 是客户端的名称。

    • mon 'allow r':这一部分定义了客户端在监视器(monitors)上的只读权限。这意味着客户端可以获取有关 Ceph 存储集群的状态信息,但不能执行写操作。

    • osd 'allow rw object_prefix pref':这一部分定义了客户端在对象存储守护程序(OSD)上的读写权限,并指定了一个对象前缀('pref')。这意味着客户端可以读取和写入具有指定前缀的对象。

    指令五

    1. ceph auth get-or-create client.designer \
    2. mon 'allow r ' \
    3. osd 'allow rw namespace=photos'
    • ceph auth get-or-create client.designer:这部分命令表示要创建一个名为 client.designer 的客户端,其中 client.designer 是客户端的名称。

    • mon 'allow r':这一部分定义了客户端在监视器(monitors)上的只读权限。这意味着客户端可以获取有关 Ceph 存储集群的状态信息,但不能执行写操作。

    • osd 'allow rw namespace=photos':这一部分定义了客户端在对象存储守护程序(OSD)上的读写权限,并指定了一个命名空间('photos')。这意味着客户端可以读取和写入属于指定命名空间的对象。

    指令六

    ceph fs authorize cephfs client.webdesigner /webcontent rw
    • ceph fs authorize cephfs:这部分命令指定了你要在 CephFS 文件系统上执行授权操作。

    • client.webdesigner:这是要授权的客户端的名称,即 client.webdesigner

    • /webcontent:这是要授权的路径,即 /webcontent。客户端将获得对此路径的访问权限。

    • rw:这是授权的权限。rw 表示读写权限,允许客户端读取和写入指定路径。

    指令七

    1. ceph auth get-or-create client.operation \
    2. > mon 'allow r, allow command "auth get-or-create", allow command "auth list"'
    • 在监视器(monitors)上进行只读访问 (allow r)。
    • 允许执行 auth get-or-create 命令 (allow command "auth get-or-create")。
    • 允许执行 auth list 命令 (allow command "auth list")

    ceph用户管理

    ceph auth list

    ceph auth list 是用于查看当前 Ceph 存储集群中所有授权信息的命令。它将列出所有已创建的客户端和守护程序的授权信息,包括它们的名称、密钥和权限配置。这个命令可用于查看当前授权的状态和确保正确的授权策略已经应用。

    执行此命令后,它将返回一个列表,其中包含了 Ceph 存储集群中所有客户端和守护程序的授权信息。列表的内容将包括客户端/守护程序名称、密钥、以及分配给它们的权限配置。

    这个命令有助于管理员了解存储集群中的身份验证和授权状态,并可以用于确保授权策略的正确性以及检查授权配置是否满足需求。如果需要进一步的授权管理,可以使用其他命令来创建、修改或删除客户端授权。

    1. [root@ceph1 ~]# ceph auth get client.admin
    2. exported keyring for client.admin
    3. [client.admin]
    4. key = AQAngjtlN0a7NRAArCmEv3AiYU+C6tjMlb2Qsg==
    5. caps mds = "allow *"
    6. caps mgr = "allow *"
    7. caps mon = "allow *"
    8. caps osd = "allow *"
    9. [root@ceph1 ~]#
    • key = AQAngjtlN0a7NRAArCmEv3AiYU+C6tjMlb2Qsg==:这是客户端 client.admin 的密钥,用于身份验证和访问 Ceph 存储集群。

    • caps mds = "allow *":这是客户端在 Ceph 文件系统的 MDS(元数据服务器)上的权限配置。"allow *" 表示客户端具有对元数据服务器的所有权限。

    • caps mgr = "allow *":这是客户端在 Ceph 管理器(mgr)上的权限配置。同样,"allow *" 表示客户端具有对管理器的所有权限。

    • caps mon = "allow *":这是客户端在监视器(mon)上的权限配置,"allow *" 表示客户端具有对监视器的所有权限。

    • caps osd = "allow *":这是客户端在对象存储守护程序(OSD)上的权限配置。同样,"allow *" 表示客户端具有对对象存储守护程序的所有权限。

    图形化连接ceph的对象存储的工具有哪些

    有几个图形化工具可以用来连接和管理 Ceph 对象存储。这些工具提供了更直观的界面,以便用户可以轻松地访问和操作 Ceph 存储集群的对象存储部分。以下是一些常见的图形化连接 Ceph 对象存储的工具:

    1. Ceph Dashboard(Ceph 管理面板):Ceph 自带的 Web 用户界面,提供了全面的 Ceph 存储集群管理和监控功能,包括对象存储。Ceph Dashboard 允许您查看和管理存储池、桶、对象、用户、权限和性能统计等。

    2. MinIO Console:如果您在 Ceph 存储集群上使用 MinIO Gateway(S3/Swift对象存储网关),则可以使用 MinIO Console 来管理对象存储。MinIO Console 提供了直观的管理界面,支持创建桶、上传和下载对象、管理用户和权限等。

    3. RadosGW Admin Portal:Ceph 的对象存储网关(RadosGW)提供了一个基本的 Web 界面,用于管理桶、用户、权限和对象。它是 Ceph 对象存储的一部分。

    4. Dolphin:Dolphin 是一个开源的 Ceph 管理工具,提供了对象存储的管理功能,包括桶和对象的管理、用户和权限管理,以及性能监控。

    5. Ceph Management Tool(CMT):CMT 是一个用于管理 Ceph 存储集群的开源工具,包括对象存储的管理。它提供了一个直观的界面,用于管理桶、对象和用户。

    这些工具可以根据您的需求和偏好选择。请注意,具体的工具可能会根据 Ceph 存储集群的版本和配置有所不同,因此建议查阅相应的文档以了解如何正确配置和使用它们。

    示例

    • The first user, client.doceditr will be used to store and retrieve documents in the docs namespace of the pool mypool.
    • The other user, client.docget, will only be used to retrieve documents from the docs namespace of the pool mypool.
    1. [Managing Ceph Authentication]
    2. [ceph@serverc ~]$ ceph osd pool ls
    3. ...
    4. mypool
    5. [ceph@serverc ~]$
    6. [ceph@serverc ~]$
    7. [ceph@serverc ~]$ ceph auth get-or-create client.docedit \
    8. mon 'allow r' \
    9. osd 'allow rw pool=mypool namespace=docs' \
    10. -o /etc/ceph/ceph.client.docedit.keyring
    11. [ceph@serverc ~]$
    12. [ceph@serverc ~]$ ceph auth get-or-create client.docget \
    13. mon 'allow r' \
    14. osd 'allow r pool=mypool namespace=docs' -o \
    15. /etc/ceph/ceph.client.docget.keyring
    16. [ceph@serverc ~]$
    17. [ceph@serverc ~]$ ceph auth list
    18. ...
    19. client.docedit
    20. key: AQANpJtkSoLBIBAA38n4GZHFEg2DXZbvwT8LFA==
    21. caps: [mon] allow r
    22. caps: [osd] allow rw pool=mypool namespace=docs
    23. client.docget
    24. key: AQCVpJtkddGIDRAAwQMRtW6genFvwGSqddoTTw==
    25. caps: [mon] allow r
    26. caps: [osd] allow r pool=mypool namespace=docs
    27. ...
    28. [ceph@serverc ~]$ scp /etc/ceph/ceph.client.docedit.keyring servera:/etc/ceph/
    29. ceph@servera's password:
    30. ceph.client.docedit.keyring 100% 65 65.4KB/s 00:00
    31. [ceph@serverc ~]$ scp /etc/ceph/ceph.client.docget.keyring servera:/etc/ceph/
    32. ceph@servera's password:
    33. ceph.client.docget.keyring 100% 64 68.1KB/s 00:00
    34. [ceph@serverc ~]$
    35. [ceph@serverc ~]$ ssh ceph@servera
    36. ceph@servera's password:
    37. Last login: Mon Jun 26 10:22:05 2023 from classroom.example.com
    38. [ceph@servera ~]$
    39. [ceph@servera ~]$ rados --id docedit -p mypool -N docs put testdoc /etc/services00
    40. [ceph@servera ~]$
    41. [ceph@servera ~]$
    42. [ceph@servera ~]$ rados --id docget -p mypool -N docs get testdoc /tmp/test
    43. [ceph@servera ~]$
    44. [ceph@servera ~]$ diff /etc/services /tmp/test
    45. [ceph@servera ~]$
    46. [ceph@servera ~]$ rados --id docget -p mypool -N docs put mywritetest /etc/services
    47. error putting mypool/mywritetest: (1) Operation not permitted
    48. [ceph@servera ~]$ logout
    49. Connection to servera closed.
    50. [ceph@serverc ~]$
    51. [ceph@serverc ~]$ ceph auth caps client.docget mon 'allow r' osd 'allow rw pool=mypool namespace=docs, allow rw pool=docarchive'
    52. updated caps for client.docget
    53. [ceph@serverc ~]$
    54. [ceph@serverc ~]$ rados --id docget -p mypool -N docs put mywritetest /etc/services
    55. [ceph@serverc ~]$
    56. [ceph@serverc ~]$ rm /etc/ceph/ceph.client.docedit.keyring
    57. [ceph@serverc ~]$
    58. [ceph@serverc ~]$ ssh servera rm /etc/ceph/ceph.client.docedit.keyring
    59. ceph@servera's password:
    60. [ceph@serverc ~]$
    61. [ceph@serverc ~]$
    62. [ceph@serverc ~]$ ceph auth del client.docedit
    63. updated
    64. [ceph@serverc ~]$
    65. [ceph@serverc ~]$ rm /etc/ceph/ceph.client.docget.keyring
    66. [ceph@serverc ~]$
    67. [ceph@serverc ~]$ ssh servera rm /etc/ceph/ceph.client.docget.keyring
    68. ceph@servera's password:
    69. [ceph@serverc ~]$
    70. [ceph@serverc ~]$ ceph auth del client.docget
    71. updated
    72. [ceph@serverc ~]$

  • 相关阅读:
    java静态内部类介绍
    前端使用docx-preview展示docx + 后端doc转docx
    C实现杨辉三角
    IDEA生成带参数和返回值注解
    【无标题】
    netty怎么解决拆包粘包的问题
    git-secret:在 Git 存储库中加密和存储密钥(下)
    K8s 里如何优雅地使用 /dev/shm 实现容器间共享内存
    区块链之快照
    OTA: Optimal Transport Assignment for Object Detection 论文和代码学习
  • 原文地址:https://blog.csdn.net/zyqash/article/details/134125079