BookmarkSubscribeRSS Feed

Viya의 CAS로부터 경로 기반 데이터 액세스

Started ‎06-09-2022 by
Modified ‎06-09-2022 by
Views 572

새로운 SAS Viya는 사용자가 데이터를 읽고 쓸 수 있는 CAS에 변화를 가져왔습니다. 이 포스팅에서는 변경 사항과 그 의미에 대해 다루고자 합니다. CAS 서버에서 파일 시스템 경로에 대한 모든 액세스는 caslib를 통해 이루어집니다. 경로 기반 caslib는 파일 시스템의 디렉토리를 소스로 사용합니다. 보안 조치로 CAS는 관리자 외의 사람(CAS 수퍼유저)이 caslib를 생성하거나 편집할 때 사용 경로를 제한할 수 있습니다. 이 기능은 허용 목록 및 거부 목록에서 가능합니다.

 

이 두 목록은 상호 배타적이며 한 번에 하나만 구현할 수 있습니다. 작업 내용은 다음과 같습니다.

  • 거부 목록: 일반 사용자가 사용할 수 없는 경로 목록을 지정합니다.
  • 허용 목록: 일반 사용자가 사용할 수 있는 경로 목록을 지정합니다.

 

하위 버전의 SAS Viya(3.5)에서는 기본적으로 거부 목록(전 블랙리스트)이 활성화되어 있으며 사용자가 caslib를 생성 및 편집할 수 없는 경로 목록을 포함하고 있습니다. 이는 권한이 부여된 사용자가 경로 기반 caslib를 생성하고 편집할 수 있는 위치에 대해 시스템 대부분을 개방합니다.

 

새로운 SAS Viya에서는 기본적으로 보다 안전을 위해 거부 목록 대신 허용 목록을 활성화하며 허용 목록에는 하나의 경로 /cas/data/caslibs를 포함합니다. 새 SAS Viya의 해당 경로는 일반적으로 CAS 서버에서 사용하는 영구 볼륨에 위치합니다. 쉽게 말해 기본적으로 사용자는 다른 위치에서 caslib를 생성 및 편집이 불가합니다.

 

다른 위치에 caslib를 생성하려는 경우 두 가지 옵션이 있습니다.

 

1. CAS super user role을 맡은 Viya 관리자는 허용 목록이나 거부 목록에 국한되지 않으며 사용 가능한 모든 경로를 가리키는 caslib를 생성할 수 있습니다.

 

2.Viya 관리자는 허용 목록에 경로를 추가하여 추가 경로를 제공할 수 있습니다.

 

새로운 SAS Viya는 Kubernetes에서 실행되므로 CAS가 파일 시스템의 데이터에 액세스하려면 파일 시스템 위치를 CAS 포드에서 사용할 수 있어야 합니다. CAS에서 데이터를 사용할 수 있도록 하는 방법 중 하나는 CAS 포드에 디렉터리를 탑재하는 것입니다. 곧 출시 예정인 Viya 4 관리 클래스에서는 CAS에서 사용할 수 있도록 NFS 디렉터리를 마운트합니다. 기사를 통해 자세히 확인하실 수 있습니다.

 

기본적으로 NFS 마운트는 CAS 포드 내부의 마운트 포인트 /gelcontent에서 사용할 수 있는 데이터가 포함된 NFS 서버 /shared/gelcontent에 경로를 만들기 위한 목적입니다. 기본 허용 목록 설정을 위한 변경을 위해서는 새 위치에 caslib를 정의하려는 경우 수퍼유저로 이를 수행하거나 허용 목록에 경로를 추가해야 합니다.

 

예를 들어 하위 버전의 SAS Viya(3.5)에서는 다음과 같이 caslib를 생성합니다.

./sas-admin cas caslibs create path --caslib salesdl

gelcontent/gelcorp/sales/data --server cas-shared-default --description

"gelcontent salesdl

 

새 SAS Viya(2020.1 상위 버전)에서 동일한 코드를 실행하는 경우 정상 작동하지 않습니다. 실패 원인을 확인하기 위해서는 명령에 --verbose 옵션을 추가해야 합니다.

./sas-admin --verbose cas caslibs create path --caslib alesdl

/gelcontent/gelcorp/sales/data --server cas-shared-default --description

"gelcontent salesdl

{"errorCode":12299,"message":"The action was not successful. (2-0-2640595)",

"details":["traceId: bc84b4db0ccb1c09","path:

/casManagement/servers/cas-shared-default/caslibs"ERROR: Cannot add caslib salesdl. It uses a path that is not in the allowlist.

","ERROR: The action stopped due to

errors.","0x887fc253:PERM_ALLOWLISTED"],"links":[],"version":2," httpStatusCode":409}

The action was not successful. (2-0-2640595)

 

오류 메시지는 수정에 큰 도움이 됩니다. 사용 중인 계정이 Viya 관리자인 경우 수퍼유저 역할을 맡을 수 있으며 액세스 가능한 모든 위치에서 caslib를 생성할 수 있습니다. 커맨드 라인 인터페이스를 사용하는 위의 코드에서 -su 옵션을 추가하면 성공적으로 caslib이 생성됩니다. 수퍼유저는 CAS가 액세스할 수 있는 모든 곳에서 caslib를 생성할 수 있습니다.

 

 caslib를 수퍼유저를 기본으로 설정하고 싶지 않다면 다른 접근 방식을 허용 목록에 경로를 추가하면 됩니다. 이는 SAS Environment Manager를 사용하거나 예제 오버레이를 사용하여 site.yaml에서 CAS Deployment 정의를 업데이트하는 대화식으로 수행할 수 있습니다.

 

환경 관리자의 허용 목록에 추가

대화형 작업을 수행합니다. SAS Environment Manager에 관리자로 로그온합니다.

 

서버 영역: 액세스할 허용 목록 또는 거부 목록이 있는 CAS 서버를 선택하여 수퍼유저 아이콘을 클릭하여 수퍼유저로 변경합니다.

 

서버를 우클릭하여 설정을 선택합니다.

Daun_0-1654754492188.png

 

설정 창에서 경로 목록 탭이 선택되어 있는지 확인합니다. 활성 목록을 수정하거나 목록 간에 전환하려면 서버 설정 창의 오른쪽에서 편집 아이콘을 클릭합니다. 허용 목록을 선택하여 목록에 경로를 추가하거나 제거할 수 있습니다.

Daun_1-1654754514099.png

변경 사항을 저장하려면 저장을 클릭합니다.

 

kustomize 및 kubectl을 사용하여 허용 목록에 추가

이전 포스팅에서 다뤘듯이 Viya 관리자는 Viya 배포를 관리하기 위해 kubectl 및 kustomize에 익숙해져야 합니다. 이러한 도구를 통해 Viya 환경을 설명하는 kubernetes 매니페스트(일반적으로 site.yaml)를 업데이트할 수 있습니다. 프로세스 흐름은 다음과 같습니다.

 

1.사용자 정의 yaml 파일을 만들어 kustomization.yaml 파일 위치의 하위 디렉터리인 디렉터리(site-config)에 저장합니다.

2.새로 생성된 yaml 파일을 참조하도록 kustomization.yaml 파일을 수정합니다.

3.kustomize build를 사용하여 Kubernetes 매니페스트(site.yaml)를 빌드합니다.

4.변경사항으로 환경을 업데이트하려면 kubectl apply를 사용합니다.

 

이해를 돕기 위해 SAS는 소프트웨어와 함께 구성 변경을 위한 시작점으로 사용할 수 있는 많은 예제 파일을 제공합니다. 허용 목록에 추가하는 예제 또한 존재합니다.  "../deploy/gelcorp/sas-bases/examples/cas/configure/cas-add-allowlist-paths.yaml"의 프로젝트 디렉토리에서 확인하실 수 있습니다.

 

예제 오버레이를 사용하여 site-config 디렉토리 하위에 새 오버레이를 만들고 목록에 경로를 추가합니다. 이 경우 /gelcontent 경로를 추가합니다. 경로는 포드 내부에 구성한 마운트 지점입니다. 대상 정의는 CASDeployment 유형의 모든 개체에 이 패치를 적용하려는 것을 나타냅니다.

Daun_2-1654754563150.png

 

오버레이를 kustomize에 사용할 수 있도록 하기 위해 kustomization.yaml 파일의 변환기 섹션에 다음을 추가합니다.


[...]

transformers:

[... previous transformers items ...]

- site-config/cas-add-allowlist-paths.yaml

[... more transformers items ...]

[...]

kustomization.yaml 일부는 다음과 같습니다.

 

Daun_3-1654754590157.png

 

이를 통해 kustomize build를 사용하여 Kubernetes 매니페스트(site.yaml)를 빌드한 다음 kubectl apply를 사용하여 환경을 업데이트합니다.(변경된 리소스만 업데이트됨)

cd ~/project/deploy/gelcorp
site.yaml sitebefore.yaml
kustomize build -o site.yaml
kubectl apply -f site.yaml

 

매니페스트 변경 전과 후를 비교하여 확인할 수 있습니다.

Daun_4-1654754618008.png

 

일반적으로 CAS가 변경되면 변경 사항을 적용하려면 다시 시작해야 합니다.

kubectl delete pod --selector='app.kubernetes.io/managed-by=sas-cas-operator'

 

CAS를 재시작하면 허용 목록이 업데이트되고 수퍼유저가 아닌 사용자는 목록의 모든 경로에서 caslib를 생성/편집할 수 있습니다. 미미한 변경사항이지만 Viya 4 및 기존 스크립트와 기능에 영향을 미칠 수 있습니다. 다행히도 손쉽게 수정할 수 있습니다.

 

추가 정보: How do I kustomize my Viya 4 deployment

Version history
Last update:
‎06-09-2022 02:07 AM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags