보안 및 권한 관리

보안 및 권한 관리

1️⃣1️⃣ 보안 및 권한 관리

Rook-Ceph은 스토리지만 제공하는 것이 아니라, 정교한 인증/인가 체계를 함께 제공합니다. 특히 CephX 인증 기반의 키 관리, RGW 사용자의 S3 ACL, CephFS의 POSIX 권한 등을 통해 세분화된 접근 제어가 가능합니다.


1. Ceph Client와 Keyring 이해

🔐 Ceph 인증 체계 이해

Ceph는 cephx라는 인증 메커니즘을 사용하며, 각 클라이언트는 Keyring을 통해 인증됩니다.

flowchart TD
  Client1[Ceph Client A]
  Client2[Ceph Client B]
  Mon[Ceph Monitor]
  OSD[Ceph OSD]

  Client1 -->|keyring 인증| Mon
  Client2 -->|keyring 인증| Mon
  Mon --> OSD

📄 예시: Keyring 파일

[client.rbd-user]
	key = AQB5gV5eFWxLEhAAZ8nDphcS7pM5PiYAH==  # base64 encoded secret
	caps mon = "allow r"
	caps osd = "allow rwx pool=rbd"
  • mon은 모니터 노드 접근 권한
  • osd는 데이터 풀 접근 권한

✅ 적용 예시

ceph auth add client.rbd-user mon 'allow r' osd 'allow rwx pool=rbd'

2. RBD access control (pool-level key)

📁 Pool 단위로 접근 제어하기

Ceph RBD 이미지는 특정 풀(pool)에 저장되며, 키를 분리해 접근을 제어할 수 있습니다.

ceph auth get-or-create client.dev-user \
  mon 'allow r' \
  osd 'allow rwx pool=dev-rbd' \
  -o /etc/ceph/ceph.client.dev-user.keyring
  • dev-userdev-rbd 풀에만 접근 가능
  • 다른 풀에 대한 접근은 차단됨

🔧 PVC와 연동

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: dev-rbd-pvc
spec:
  storageClassName: rook-ceph-block
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

StorageClass에 pool: dev-rbd가 설정되어 있어야 해당 권한으로 연결됩니다.


3. RGW User 관리 및 버킷 ACL

🌐 S3 호환 객체 스토리지의 인증

Rook-Ceph의 RGW는 S3 API를 따르며, 사용자 관리 및 버킷 권한 설정이 가능합니다.

radosgw-admin user create --uid=john --display-name="John Doe"
{
  "user_id": "john",
  "access_key": "AKI123...",
  "secret_key": "s3cr3tk3y"
}

🧰 버킷 생성 및 ACL

radosgw-admin bucket create --uid=john --bucket=mybucket
radosgw-admin bucket stats --bucket=mybucket

버킷 ACL 예시

radosgw-admin bucket policy set --uid=john --bucket=mybucket --policy='{
  "Version":"2012-10-17",
  "Statement":[{
    "Effect":"Allow",
    "Principal":"*",
    "Action":["s3:GetObject"],
    "Resource":["arn:aws:s3:::mybucket/*"]
  }]
}'

AWS 스타일의 IAM 정책 문법으로도 접근 제어가 가능


4. CephFS와 POSIX 권한

📂 POSIX 파일 권한 적용 가능

CephFS는 마치 로컬 파일 시스템처럼 POSIX 권한이 적용되므로, 사용자/그룹별로 세밀한 파일 접근 제어가 가능합니다.

# CephFS에 마운트된 경로에서
mkdir /mnt/cephfs/team_data
chown devuser:devteam /mnt/cephfs/team_data
chmod 770 /mnt/cephfs/team_data

🧱 CephFS ACL을 통한 정교한 제어

setfacl -m u:devuser:rwx /mnt/cephfs/team_data
getfacl /mnt/cephfs/team_data

권한 제어가 NFS 혹은 Samba 등과 연동될 경우에도 그대로 적용됩니다.


📌 실무 요약

구성 요소 인증 방식 권한 범위
Ceph Client cephx + Keyring 풀 단위, 모니터/OSD 권한
RBD Pool별 keyring 특정 Block Pool만 접근
RGW S3 Key + Policy 버킷 단위 ACL 설정 가능
CephFS POSIX 권한 파일, 디렉토리, ACL까지

📚 보안 아키텍처 흐름도

graph TD
  A[Client Pod (PVC)] -->|cephx 인증| C[Ceph Monitor]
  B[RGW Client (S3 API)] -->|Access Key 인증| D[RGW Daemon]
  D -->|Object 저장| G[Object Store]
  C -->|Auth 확인 후 허용| E[OSD Daemon]
  E --> F[Block Pool or CephFS]

Ceph는 “모든 데이터 접근은 명시적인 권한 설정 없이는 차단"이라는 보안 설계를 따릅니다.
이 구조를 이해하고 설정하면, 보안성이 높은 스토리지 환경을 구성할 수 있습니다.


RSS Feed
마지막 수정일자