보안 및 권한 관리
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-user
는dev-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는 “모든 데이터 접근은 명시적인 권한 설정 없이는 차단"이라는 보안 설계를 따릅니다.
이 구조를 이해하고 설정하면, 보안성이 높은 스토리지 환경을 구성할 수 있습니다.
마지막 수정일자