Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
Info

Installing Server Node 를 통해 CH Server가 설치되었다고 가정합니다.

...

아래 Environment필드에서 Bind IP, Listenning Port, DB 파일 저장 위치 등을 변경할 수 있습니다.
일반적으로 Production에서는 443 포트로 변경 후 사용하며, 8888 포트를 사용하며 다른 포트를 사용해야 하는 경우는 Nginx의 Config의 apps 포트를 같이 수정 후 Nginx를 reload해야 합니다. TLS_CERTIFICATE 옵션으로 default로 제공되는 self-signed cert파일을 Trusted Signed Cerificates으로 대체할 수 있습니다.

...

Code Block
languageyaml
$ sudo vim /etc/systemd/system/multi-user.target.wants/cloudhub.service
[Unit]
After=network-online.target

[Service]
User=root
Group=root
Environment="HOST=0.0.0.0"
Environment="PORT=4438888"
# default: 8888
Environment="TLS_CERTIFICATE=/usr/lib/cloudhub/key/cloudhub_self_signed.pem"
#Environment="TLS_PRIVATE_KEY=my.key"
Environment="BOLT_PATH=/var/lib/cloudhub/cloudhub-v1.db"
#Environment="ETCD_ENDPOINTS={ETCD_HOSTNAME01}:2379,{ETCD_HOSTNAME02}:2379,{ETCD_HOSTNAME03}:2379"
Environment="CANNED_PATH=/usr/share/cloudhub/cloudhub-canned"
Environment="PROTOBOARDS_PATH=/usr/share/cloudhub/cloudhub-protoboards"
EnvironmentFile=-/etc/default/cloudhub
ExecStart=/usr/bin/cloudhub $CLOUDHUB_OPTS
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=multi-user.target

...

도메인이 없이 IP로만 사용할 경우는 공인된 인증서 발급이 되지 않으므로, 아래와 같이 self-signed 인증서-키 파일을 생성/사용하도록 합니다.(유효 기간 즉, -days옵션은 사용 환경에 따라 적절한 값으로 설정하도록 하며, openssl 버전에 의존성이 있으므로 리눅스 서버 즉, CH 서버가 설치된 호스트에서 실행하는 편이 좋습니다.)

Code Block
$ cd /usr/lib/cloudhub/key/
$ openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout cloudhub_self_signed.pem -out cloudhub_self_signed.pem -subj "/CN=localhost" -days 365
$ openssl rsa -in cloudhub_self_signed.pem -text > cloudhub_self_signed.key
$ openssl x509 -inform PEM -in cloudhub_self_signed.pem -out cloudhub_self_signed.crt

위 명령으로 생성된 파일을 위 TLS_CERTIFICATE의 경로에 복사한 후, Cloudhub를 [재]실행합니다.

...

Code Block
languageyaml
$sudo vim /etc/default/cloudhub
CLOUDHUB_OPTS="-l=debug \
--auth-duration=0 \
--inactivity-duration=10m \
-t=74c1e9e2450886060b5bf736b935cd0bf960837f \
-i=<client-id> \
-s=<client-secret> \
--public-url=https://localhost \
--auth0-domain=https://cloudhub.auth0.com \
--auth0-client-id=<client-id> \
--auth0-client-secret=<client-secret> \
-u=salt:http://{salt-master-ip}:8000/run \
-k=salt:<salt_token> \
-u=swan:https://{swan-IP}/api/v1/graphql \
-k=swan:<swan_token> \
-u=oncue:<port> \
-u=vsphere:on \
-u=aws:on \
-u=k8s:on \
-u=osp:on \
-u=salt-env-path:/opt/miniconda3/envs/saltenv \
--login-auth-type=basic \
--password-policy='(?=.*[0-9]{1,50})(?=.*[~`!@#$%\\^&*()-+=]{1,50})(?=.*[a-zA-Z]{2,50}).{8,50}$' \
--password-policy-message='Enter at least 8 digits using at least 1 number and at least 1 special sentence, and at least 2 English characters.' \
--mail-subject='[Notifiy] $user_id Password is reset' \
--mail-body-message='Reset OTP for  $user_id is '$user_pw'.<br>Do not forget this!<br>This OTP will use just once when login into cloudhub.<br>Then you must set up the new password' \
--kapacitor-url=http://{Kapacitor_IP}:9094 \
--external-exec=/usr/bin/python \
--external-exec-args=/basic/call.py \
--influxdb-url=http://{InfluxDB_IP}:8086 \
--retry-policy=count:3 \
--retry-policy=delaytime:5 \
--retry-policy=type:delay"

...

Option

Description

-l, --log-level [debug|info|error]

생략시 info, 최초 사용 시에는 오류 검출을 위해 debug 모드 사용 권장.

--auth-duration

  • 인증을 위한 총 쿠키(토큰) 수명(Lifespan), 단위: h(시간).

  • 만료 시, 세션 time out 후, 로그인 창 redirect.

  • Default:"720h(30d)",

    • ”0”은 browser 종료 시 만료.

--inactivity-duration

  • 세션 쿠키(토큰) 유효 기간.

  • 세션 유지를 위해서는 설정된 기간 이내에 쿠키(토큰)을 갱신해야 함.

  • 만료 시, 세션 time out 후, 로그인 창 redirect.

  • Default:"5m".

-t, --token-secret

Access token 발급용 JWT Signature를 생성하기 위한 secret key.

간단히, 아래와 같은 openssl 명령어로 생성할 수 있습니다.

Code Block
$ openssl rand -base64 256 | tr -d '\n'
OGuoga/mdZrKXol5oDXxBw==A5wkcOKWFQB0A02escqdFIk/FR2ZdsDe+lVLnpt

이외에 생성 방법은 Goolge, github 등의 공식 사이트에서 토큰 발급을 지원합니다.

--public-url

CloudHub portal의 도메인 혹은 IP로 대체합니다.

--auth0-domain

위 예시의 토근들을 사용하면, OAuth 2.0 인증 방식의
미리 준비된 https://cloudhub.auth0.com으로 인증 요청을 하게 되며,
이후, auth0에 간단 sign up(회원 가입)하거나, 보유하고 있는 google 계정으로 로그인할 수 있습니다.

만일, 별도의 토큰을 발급받아 사용하고자 한다면, (혹은 다른 종류의 즉, github, google등의 인증 서비스를 사용하고자 한다면)Managing CloudHub security 를 참조합니다.

Info

만일 어떠한 종류의 인증 관련도 설정하지 않으면,
No-Auth 모드로 동작 합니다.
(로그인 없이, 계정 관리 및 Agent 관리 기능 제외 모드.)

--auth0-client-id

--auth0-client-secret

-i, --github-client-id

-s, --github-client-secret

OAuth 인증을 위한 GitHub Client ID 값입니다.

OAuth 인증을 위한 GitHub Client Secret 값입니다.

-u, --addon-url [salt|swan]

CloudHub가 지원하는 특정 기능을 위한 모듈과의 연동을 위한 API URL.

  • salt: Salt Mater의 도메인 혹은 IP를 사용합니다.

  • swan: SWAN Contuctor의 도메인 혹은 IP를 사용

    • oncue: oncue service를 이용할 경우 oncue의 port 입력

기타 CloudHub Server Option 으로 사용

  • oncue port : -u=oncue:<port>

  • vsphere 사용 : -u=vsphere:<on/off>

  • Kubernetes 사용 : -u=k8s:<on/off>

  • Infrastructure의 AWS 사용

    • -u=aws:<on/off>

-k, --addon-tokens [salt|swan]

위 API에 대한 Accessable Token.

  • salt: Snetsystems CloudHub 담당 영업에 문의.
    (CloudHub 라이센스 기한/조건 등, 협의 필요)

  • swan: Snetsystems SWAN 담당 영업에 문의.

--login-auth-type

CloucHub Portal의 Login Type을 지정합니다. (default : oauth)

  • mix : oauth와 basic 둘 다 지원

  • oauth : oauth만 지원

  • basic : basic(ID/PWD)만 지원

--password-policy

비밀번호 정규식

  • Login Type이 mix와 basic 경우에 사용하며 아래 옵션도 동일합니다.

--password-policy-message

비밀번호 정규식 메세지

--mail-subject

비밀번호 Reset Mail 제목

--mail-body-message

비밀번호 Reset Mail 내용

--kapacitor-url

비밀번호 Reset Mail 발신 서버

(Kapacitor Alert Endpoint에 SMTP가 설정되어 있어야 합니다.)

--external-exec

--external-exec-args

비밀번호 Reset 알림을 위한 외부 프로그램 경로

비밀번호 Reset 알림을 위한 외부 프로그램 실행 파일 경로

--influxdb-url

Acitivity Logging을 위한 Influxdb 서버 URL

--retry-policy

Login 차단 정책

  • count : Login 실패 횟 수

  • delaytime : Login이 차단되는 시간 (분, min)

  • type : lock or delay

    • lock : 비밀번호 실패가 count 이상이면 Login 차단. 관리자만 Unlock 가능합니다.

      • delay : 비밀번호 실패가 count 이상이면 delaytime 설정 시간이내에 Login 할 수 없습니다. delaytime이 지나면 Login 요청 가능합니다.

Note

kapacitor mail과 external program 옵션 모두 설정되었을 때 처리 순서
(상호 배타적으로 실행됨)

  1. external program(--external-exec, --external-exec-args)

  2. kapacitor mail(--kapacitor-url)

두 옵션 중에 사용할 1개만 설정하기 바라며,

만일, 관리자에 의한 password reset만 사용 시, 위 두 개 옵션 모두 적용하지 않습니다.

Warning

Public 인터넷을 사용할 수 없는 폐쇄망에서는 OAuth(github, google, auth0 등) 인증 로그인을 사용할 수 없습니다. ID/Password 로그인 방식만 지원합니다.

아래와 같이 Option을 설정합니다. 로그인 방식은 basic(id/pwd) 방식만 지원하며 OAuth 인증 설정이 1개는 필수로 있어야 하므로 의미 없는 값을 넣습니다.

--login-auth-type=basic

-t=aa

-i=bb

-s=cc

...