Skip to main content

6. SDF Container 연동

Composite Container Application 적용 가이드(샘플)

동일한 POD에 두 개의 컨테이너 실행 가이드

apiVersion: v1
kind: ConfigMap
metadata:
name: cloud-cdf-config
namespace: dev
data:
##[SDF Container 전용] SKMS URL 필수 설정
SKMS_API_URL: "http://cloud-skms-service.dev.svc.cluster.local"
##[SDF Container 전용] 서비스 포트
CONTAINER_LINKER_SERVER_PORT: "8181"
## 선택 설정
# LOG_LEVEL: debug (기본 설정: info)
## 선택 설정 - 통합 로그 전송 bypass
# LOG_SEND_USE: false (기본 설정: true)
  • yaml 실행 전 업무시템과 동일한 namespace로 수정
  • SKMS_API_URL은 SDF Container가 설치되는 POD에서 통신이 가능해야함
  • Deployment yaml 파일에 사이드카 컨테이너(Security365 SDF Container) 서비스 추가
         ## 서비스 이름
- name: cloud-containerlinker-service
## 도커 이미지 정보
image: security365acr.azurecr.io/shieldrm/cloud-containerlinker:latest
imagePullPolicy: Always
## 컨테이너 서비스 포트
ports:
- containerPort: 8181
## ConfigMap 정보
envFrom:
- configMapRef:
name: cloud-cdf-config
## 공유 디렉토리 정보
volumeMounts:
- name: data-cloud-drm-shared
mountPath: /rmswork
## SDF Container 서비스 메모리 설정
resources:
requests:
memory: 256Mi
limits:
memory: 512Mi
  • 고객사 업무시스템과 동일한 POD에서 실행되므로 호출 URL은 항상 "http://127.0.0.1:8181" 사용
  • 업무시스템과 파일 공유가 가능한 공유 디렉토리(PVC) 마운트 필요
  • Deployment yaml 샘플
apiVersion: apps/v1
kind: Deployment
metadata:
name: cloud-ssevtr-service
namespace: dev
labels:
app: cloud-ssevtr-service-label
# namespace: cloud-ss-svc
spec:
replicas: 1
selector:
matchLabels:
app: cloud-ssevtr-service-label
template:
metadata:
labels:
app: cloud-ssevtr-service-label
spec:
containers:
- name: cloud-ssevtr-service
image: scr.softcamp.co.kr/saas/cloud-ss-evtr-svc:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: cloud-ssevtr-config
volumeMounts:
- name: data-cloud-drm-shared
mountPath: /rmswork
resources:
requests:
memory: 2Gi
limits:
memory: 2Gi
##==========================[SDF Container 전용 START]==========================##
- name: cloud-containerlinker-service
image: security365acr.azurecr.io/shieldrm/cloud-containerlinker:latest
imagePullPolicy: Always
ports:
- containerPort: 8181
envFrom:
- configMapRef:
name: cloud-cdf-config
volumeMounts:
- name: data-cloud-drm-shared
mountPath: /rmswork
resources:
requests:
memory: 256Mi
limits:
memory: 512Mi
##==========================[SDF Container 전용 END]==========================##
volumes:
- name: data-cloud-drm-shared
persistentVolumeClaim:
claimName: data-cloud-drm-shared
imagePullSecrets:
- name: security365acr

SDF Container 접속 및 로그 확인 명령

  • SDF Container pod 접속 : kubectl -n dev exec --stdin --tty cloud-ssevtr-service-754b65cfb-bjzzr -c cloud-containerlinker-service sh
  • SDF Container pod 로그 : kubectl logs -f --tail 10000 -n dev cloud-ssevtr-service-754b65cfb-bjzzr -c cloud-containerlinker-service

SDF Container의 동작 상태 점검 API 호출

설명
  • 업무시스템 POD(메인 컨테이너)에 사이트카 컨테이너로 Deploy가 완료된 후 메인 컨테이너에 접속하여 API 호출
  • 메인 컨테이너에 접속하여 CURL 명령어로 SDF Container의 API 호출
  • API 호출 시 SHIELDRM 관리자 페이지의 연동 앱 관리 메뉴에서 발급 받은 라이선스 필요
  • API 사용 가능 이미지 정보 : security365acr.azurecr.io/shieldrm/cloud-containerlinker:20250213.1 이후 버전에서 동작

CURL 명령어 실행(라이선스 입력)

curl http://127.0.0.1:8181/api/healthCheck/{licenseKey}

실행 결과

  • 성공
{
"code": 0,
"healthCheck": {
"result": "success",
"SKMS_API_URL": "http://127.0.0.1:8080"
},
"licenseCheck": {
"result": "success",
"companyId": "3CJ55MSE-xLO7Sxt4-qUBKzbcs-XP2cgGEq",
"systemDomain": "test.com"
},
"keyCheck": {
"result": "success",
"customHeaderKey": "AVdos*******************",
"dsHeaderKey": "UngyY*******************",
"dsKeyEncryptionKey": "CwI3F*******************",
"masterKey": "UldoZ*******************"
},
"azureInfoCheck": {
"result": "success",
"appId": "7e82e*******************************",
"appSecret": "LBd8Q***********************************",
"azureTenantId": "4d615*******************************"
},
"azureInfoValidCheck": {
"result": "success"
}
}

상태 점검 항목 설명 및 실패 조치 방안

점검 항목설명실패 시 조치 방안
healthCheckSDF Container와 EnDec 서비스와의 통신 확인- SDF 컨피그맵의 SKMS_API_URL 정보 확인
- 클러스터 간 통신 네트워크 및 DNS 설정 점검
- 유효한 인증서인지 확인
licenseCheck발급된 라이선스가 유효한지 확인- 발급된 라이선스와 입력 값이 동일한지 확인
- 연동 앱 관리 메뉴에서 발급된 라이선스의 사용 여부 확인
keyCheckSCI 서버와 연동된 필수 키 데이터 확인- 키볼트(KMS) 서비스가 정상 동작 하는지 확인
- SCI 서버에 DS_CUSTOM_HEADER_KEY, DS_KEY_ENCRYPTION_KEY 커스텀 정책 등록 및 최상위 부서에 적용 여부 확인
- 커스텀 정책 등록 후 키 연동 재실행 필요
azureInfoCheckAzure 관련 필수 설정 값 존재 여부 확인- SDF 컨피그맵의 SHIELD ID 연결 정보 확인(네임스페이스 등)
- SHIELD ID 서비스가 정상 동작 하는지 확인
- SHIELD ID에 등록된 회사의 Microsoft Azure Tenant Id 입력값 확인
- SKMS 컨피그맵의 AZURE_INFO 입력 여부 확인
azureInfoValidCheckAzure 토큰 발급 가능 여부 확인- SKMS 컨피그맵의 AZURE_INFO 정보로 SHIELD ID에 등록된 회사의 Microsoft Azure Tenant Id에서 사용 가능한 토큰 발급 실패
- Azure 관련 필수 설정 값이 유효한 값인지 확인 필요
- Azure 통신 과정에서 SSL 인증서 관련 이슈 확인(루트 인증서로 검증)