웹사이트 검색

Rocky Linux 9에 NetBox를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. PostgreSQL 설치 및 구성
  3. Redis 설치 및 구성
  4. Netbox IRM 설치
  5. NetBox IRM 구성
  6. httpd를 리버스 프록시로 설정\n
  7. SSL Letsencrypt로 NetBox IRM 보안
  8. NetBox에 로그인
  9. 결론

NetBox는 네트워크 자동화 및 인프라 엔지니어링을 위해 설계된 인프라 리소스 모델링(IRM) 소프트웨어입니다. 처음에는 DigitalOcean 팀에서 만들었고 이제 Apache 2 라이선스로 출시된 오픈 소스 프로젝트가 되었습니다. NetBox는 PostgreSQL을 기본 데이터베이스로 사용하는 Python Django 웹 프레임워크에서 생성되었으며 NetBox 설치는 다른 Python Django 웹 애플리케이션과 매우 유사합니다.

NetBox는 다음을 포함하는 인프라를 관리하는 데 도움이 됩니다.

  • DCIM(데이터 센터 인프라 관리)\n
  • IPAM(IP 주소 관리)
  • 데이터 회로\n
  • 연결(네트워크, 콘솔 및 전원)
  • 장비 랙
  • 가상화\n
  • 비밀

이 튜토리얼에서는 NetBox IRM(Infrastructure Resource Management)을 Rocky Linux 9 서버에 설치합니다. Rocky Linux 시스템에서 PostgreSQL을 데이터베이스 시스템으로, Apache/httpd를 리버스 프록시로 사용하여 NetBox를 설정합니다. 또한 Certbot 및 Letsencrypt를 통해 SSL/TLS 인증서로 NetBox를 보호할 수 있습니다.

전제 조건

시작하기 전에 다음 요구 사항이 있는지 확인하십시오.

  • A Rocky Linux 9 서버 - 이 예에서는 호스트 이름이 netbox-rocky인 Rocky Linux 서버를 사용합니다.\n
  • sudo/root 관리자 권한이 있는 루트가 아닌 사용자.\n
  • 허용 모드에서 실행 중인 SELinux.\n
  • 서버 IP 주소를 가리키는 도메인 이름 또는 하위 도메인 - 이 예에서는 하위 도메인 netbox.hwdomain.io를 사용하여 NetBox를 실행합니다.\n

이러한 전제 조건이 충족되면 NetBox를 설치할 준비가 된 것입니다.

PostgreSQL 설치 및 구성

NetBox IRM은 기본적으로 PostgreSQL 데이터베이스 서버를 지원합니다. 이 글을 쓰는 시점에는 최소한 PostgreSQL v10 이상이 필요했습니다. 기본적으로 Rocky Linux 리포지토리는 NetBox 배포에 적합한 PostgreSQL 서버 v13을 제공합니다.

이 단계에서는 PostgreSQL 데이터베이스 서버를 설치하고 암호 인증을 설정한 다음 NetBox에서 사용할 새 데이터베이스와 사용자를 만듭니다.

시작하려면 아래 명령을 실행하여 Rocky Linux 서버에 PostgreSQL 서버를 설치합니다.

sudo dnf install postgresql-server

메시지가 표시되면 y를 입력하여 확인하고 ENTER를 눌러 계속 진행합니다.

PostgreSQL 서버를 설치한 후 아래 명령을 실행하여 PostgreSQL 데이터베이스 및 구성을 초기화합니다.

sudo postgresql-setup --initdb

...에서 데이터베이스 초기화와 같은 출력을 수신해야 합니다.

PostgreSQL 서버가 초기화되면 다음으로 PostgreSQL 사용자에 대한 암호 암호화 및 인증을 설정합니다.

아래의 nano 편집기 명령을 사용하여 PostgreSQL 구성 파일 /var/lib/pgsql/data/postgresql.conf을 엽니다.

sudo nano /var/lib/pgsql/data/postgresql.conf

password_encryption 매개변수의 주석을 제거하고 값을 scram-sha-256으로 변경합니다. 이렇게 하면 PostgreSQL 사용자의 기본 암호 암호화가 scram-sha-256으로 설정됩니다.

password_encryption = scram-sha-256

파일을 저장하고 편집기를 종료합니다.

다음으로 아래 명령을 사용하여 다른 PostgreSQL 구성 파일 /var/lib/pgsql/data/pg_hba.conf을 엽니다. 이 파일은 PostgreSQL에 대한 인증 방법을 정의할 수 있는 곳입니다.

sudo nano /var/lib/pgsql/data/pg_hba.conf

호스트 127.0.0.1/32 및 ::1/128의 기본 인증 방법을 scram-sha-256으로 변경합니다. 이를 통해 PostgreSQL 사용자의 기본 인증 방법을 scram-sha-256으로 설정합니다.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

파일을 저장하고 완료되면 편집기를 종료합니다.

이제 아래의 systemctl 명령 유틸리티를 실행하여 PostgreSQL 서비스를 시작하고 활성화하십시오.

sudo systemctl start postgresql
sudo systemctl enable postgresql

그런 다음 아래 명령을 사용하여 PostgreSQL 서비스를 확인합니다.

sudo systemctl status postgresql

다음과 같은 출력을 수신해야 합니다. PostgreSQL 서비스가 실행 중이고 활성화되어 있습니다. 즉, 부팅 시 PostgreSQL이 자동으로 시작됩니다.

이제 PostgreSQL 서버에 대한 암호 인증을 구성했으므로 이제 실행 중입니다. 다음으로 기본 postgres 사용자의 새 암호를 설정하고 NetBox에서 사용할 새 데이터베이스와 사용자를 만듭니다.

아래 명령을 통해 PostgreSQL 셸에 로그인합니다.

sudo -u postgres psql

아래 쿼리를 실행하여 기본 PostgreSQL 사용자 postgres에 대한 새 암호를 설정합니다. 다음 쿼리에서 암호를 변경해야 합니다.

ALTER USER postgres WITH PASSWORD 'PostgreSQLPass';

다음으로 아래 쿼리를 실행하여 새 PostgreSQL 데이터베이스 및 사용자를 생성합니다. 또한 다음 쿼리에서 기본 비밀번호를 변경해야 합니다.

이 예에서는 NetBox 설치에 사용할 사용자 netbox로 새 데이터베이스 netboxdb를 생성합니다.

CREATE DATABASE netboxdb;
CREATE USER netbox WITH ENCRYPTED PASSWORD 'NetBoxRocks';
GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox;

이제 Ctrl+d를 누르거나 quit를 입력하여 종료합니다.

마지막으로 아래 명령을 실행하여 새 사용자 netbox를 통해 새 데이터베이스 netboxdb에 PostgreSQL 셸에 로그인합니다. 암호를 묻는 메시지가 나타나면 암호를 입력하십시오.

sudo -u postgres psql --username netbox --password --host localhost netboxdb

PostgreSQL 셸에 로그인한 후 아래 쿼리를 실행하여 현재 연결을 확인합니다.

\conninfo

다음과 같은 출력을 받게 됩니다. netbox 사용자를 통해 netboxdb 데이터베이스에 PostgreSQL 서버에 연결했습니다.

PostgreSQL이 설치되고 데이터베이스 및 사용자가 생성되면 다음으로 NetBox 웹 애플리케이션에서 캐시 관리로 사용될 Redis를 설치합니다.

Redis 설치 및 구성

Redis는 NetBox가 캐시 관리 및 대기열 관리에 사용할 무료 오픈 소스 키-값 데이터베이스입니다. 이 글을 쓰는 시점에서 NetBox에는 최소한 Redis 서버 v4가 필요했으며 기본 Rocky Linux 리포지토리는 Redis v6을 제공하며 NetBox 배포에 적합합니다.

아래 dnf 명령을 통해 Rocky Linux 서버에 Redis를 설치합니다.

sudo dnf install redis

메시지가 표시되면 y를 입력하고 ENTER를 눌러 계속 진행합니다.

Redis가 설치된 후 아래의 nano 편집기 명령을 사용하여 Redis 구성 파일 /etc/redis/redis.conf을 엽니다.

sudo nano /etc/redis/redis.conf

매개변수 requirepass의 주석을 제거하고 Redis 서버의 새 비밀번호를 입력하십시오.

requirepass RedisPasswordNetBox

파일을 저장하고 완료되면 편집기를 종료합니다.

다음으로 아래 systemctl 명령을 실행하여 Redis 서버를 시작하고 활성화합니다.

sudo systemctl start redis
sudo systemctl enable redis

그런 다음 아래 systemctl 명령 유틸리티를 통해 Redis 서버를 확인합니다.

sudo systemctl status redis

출력에서 Redis 서버가 활성화되고 부팅 시 자동으로 실행되는 것을 볼 수 있습니다. 그리고 Redis 서버의 상태가 실행 중입니다.

Redis 설치를 확인하려면 아래의 redis-cli 명령을 통해 Redis에 액세스합니다.

redis-cli

ping 쿼리를 실행하면 (오류) NOAUTH 인증 필요와 같은 출력을 받아야 합니다. ping 명령을 실행하려면 인증을 받아야 합니다.

ping

아래 Redis 쿼리를 실행하여 Redis 서버에 인증합니다. 반드시 비밀번호를 변경하세요. 인증되면 출력 OK를 받아야 합니다.

AUTH RedisPasswordNetBox

ping 쿼리를 다시 실행하면 출력 PONG"이 표시되어야 합니다. 이는 쿼리가 성공적으로 실행되었고 Redis 서버에 인증되었음을 의미합니다.

ping

이제 Rocky Linux에 PostgreSQL 데이터베이스 서버와 Redis 키-값 데이터베이스를 설치했습니다. 이제 NetBox 설치를 시작할 준비가 되었습니다.

Netbox IRM 설치

NetBox는 Python Django Framework로 작성된 웹 애플리케이션입니다. NetBox의 현재 버전에는 Python 3.8, 3.9, 3.10 또는 3.11 이상이 필요합니다. Rocky Linux 9의 기본 Python은 NetBox 배포에 적합한 Python 3.9입니다.

시작하려면 아래 dnf 명령을 실행하여 NetBox에 대한 패키지 종속성을 설치합니다. 메시지가 표시되면 y를 입력하고 ENTER를 눌러 계속 진행합니다.

sudo dnf install gcc libxml2-devel libxslt-devel libffi-devel libpq-devel openssl-devel redhat-rpm-config git

다음으로 아래 명령을 실행하여 기본 홈 디렉토리 /opt/netbox로 새 시스템 사용자 netbox를 생성합니다.

sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox

새 디렉터리 /opt/netbox를 만들고 작업 디렉터리를 그 디렉터리로 이동합니다. 그런 다음 git 명령을 통해 NetBox 소스 코드를 다운로드합니다. /opt/netbox 디렉토리는 NetBox의 기본 설치 디렉토리로 사용됩니다.

mkdir -p /opt/netbox; cd /opt/netbox
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .

NetBox 설치 디렉터리 /opt/netbox의 소유권을 사용자 및 그룹 netbox로 변경합니다. 그런 다음 작업 디렉토리를 /opt/netbox/netbox/netbox로 이동하십시오.

sudo chown -R netbox:netbox /opt/netbox
cd /opt/netbox/netbox/netbox

다음으로 아래 명령을 실행하여 기본 NetBox 구성을 configuration.py에 복사합니다. 그런 다음 Python 스크립트 ../generate_secret_key.py를 통해 SECRET_KEY를 생성합니다.

sudo -u netbox cp configuration_example.py configuration.py
sudo -u netbox python3 ../generate_secret_key.py

이제 생성된 SECRET_KEY를 복사합니다. 이것은 NetBox 설치를 설정하는 데 사용됩니다.

아래의 nano 편집기 명령을 사용하여 NetBox 구성 파일 configuration.py을 엽니다.

sudo -u netbox nano configuration.py

ALLOWED_HOSTS 매개변수에 도메인 이름을 추가하고 PostgreSQL 데이터베이스 및 NetBox 사용자의 세부 정보를 입력하고 구성한 Redis 비밀번호를 입력하고 생성된 SECRET_KEY를 SECRET_KEY 매개변수에 붙여넣어야 합니다.

# domain and IP address
ALLOWED_HOSTS = ['netbox.hwdomain.io', '192.168.5.59']

# database configuration
DATABASE = {
    'NAME': 'netboxdb',               # Database name
    'USER': 'netbox',               # PostgreSQL username
    'PASSWORD': 'NetBoxRocks', # PostgreSQL password
    'HOST': 'localhost',            # Database server
    'PORT': '',                     # Database port (leave blank for default)
    'CONN_MAX_AGE': 300,            # Max database connection age (seconds)
}

# Redis cache configuration
REDIS = {
    'tasks': {
        'HOST': 'localhost',      # Redis server
        'PORT': 6379,             # Redis port
        'PASSWORD': 'RedisPasswordNetBox',           # Redis password (optional)
        'DATABASE': 0,            # Database ID
        'SSL': False,             # Use SSL (optional)
    },
    'caching': {
        'HOST': 'localhost',
        'PORT': 6379,
        'PASSWORD': 'RedisPasswordNetBox',
        'DATABASE': 1,            # Unique ID for the second database
        'SSL': False,
    }
}

# Secret key
SECRET_KEY = '-K0AV#USk(!-6hAEF-8NMgweJh6ex&+j0Kb$N7bi=*jsF9TOg*'

완료되면 파일을 저장하고 종료합니다.

이제 아래 스크립트 /opt/netbox/upgrade.sh를 실행하여 NetBox IRM 설치를 시작하십시오.

sudo -u netbox /opt/netbox/upgrade.sh

그러면 NetBox 웹 애플리케이션용 Python 가상 환경이 설치되고, PyPI 리포지토리를 통해 필요한 Python 종속성이 설치되며, NetBox용 데이터베이스 마이그레이션이 실행되고, 마지막으로 NetBox 웹 애플리케이션용 정적 파일이 생성됩니다.

아래는 upgrade.sh 스크립트가 실행되었을 때의 출력입니다.

다음은 NetBox 설치가 완료되면 출력되는 메시지입니다.

이 시점에서 시스템에 NetBox IRM을 설치했습니다. 그러나 여전히 NetBox 설치를 설정해야 합니다.

NetBox IRM 구성

이 단계에서는 NetBox용 관리 사용자를 생성하고, cron을 설정하고, NetBox용 systemd 서비스를 설정하여 NetBox IRM 설치를 설정합니다.

시작하려면 아래 명령을 실행하여 NetBox 설치를 위한 Python 가상 환경을 활성화하십시오.

source /opt/netbox/venv/bin/activate

활성화되면 프롬프트가 (venv) [email 와 같이 표시됩니다..

다음으로 작업 디렉토리를 /opt/netbox/netbox로 이동하고 Django 스크립트 manage.py를 실행하여 새 NetBox 관리 사용자를 생성합니다.

cd /opt/netbox/netbox
python3 manage.py createsuperuser

NetBox의 새 관리 사용자, 이메일 및 비밀번호를 입력하십시오. 출력 Superuser created successfully를 받아야 합니다. 이는 NetBox 관리 사용자가 생성되었음을 의미합니다.

다음으로 아래 명령을 실행하여 매일 실행할 크론을 설정합니다. netbox-housekeeping.sh 스크립트는 NetBox 환경을 정리하는 데 사용되며 만료된 작업, 이전 세션 또는 만료된 레코드를 제거합니다.

sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

NetBox용 크론을 구성한 후 Gunicorn과 함께 실행되도록 NetBox를 설정합니다.

아래 명령을 실행하여 Guncorn 구성을 /opt/netbox/gunicorn.py에 복사합니다. 그런 다음 아래의 nano 편집기 명령을 사용하여 Gunicorn 구성 파일 /opt/netbox/gunicorn.py을 엽니다.

sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
sudo -u netbox nano /opt/netbox/gunicorn.py

다음 행을 사용하여 바인드 매개변수를 변경하십시오. 이렇게 하면 포트 8001을 사용하여 NetBox 웹 응용 프로그램이 로컬로 실행됩니다.

bind = '127.0.0.1:8001'

완료되면 파일을 저장하고 종료합니다.

다음으로 아래 명령을 실행하여 NetBox의 기본 systemd 서비스를 /etc/systemd/system 디렉터리에 복사합니다. 이것은 NetBox를 관리하는데 사용될 서비스 파일 netbox와 netbox-rq를 복사합니다.

sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/

이제 아래 systemctl 명령 유틸리티를 실행하여 systemd 관리자를 다시 로드하고 시스템에 새로운 변경 사항을 적용하십시오.

sudo systemctl daemon-reload

마지막으로 아래 systemctl 명령을 실행하여 netbox-rq 서비스를 시작하고 활성화합니다. 이렇게 하면 메인 넷박스 서비스도 자동으로 시작됩니다.

sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq

이제 아래 systemcl 명령을 통해 netbox-rq 및 netbox 서비스를 모두 확인합니다.

sudo systemctl status netbox
sudo systemctl status netbox-rq

netbox-rq 서비스 상태의 출력.

netbox 서비스의 출력.

이 시점에서 NetBox IRM은 시스템 서비스로 실행 중이며 Gunicorn과 함께 WSGI 애플리케이션으로 실행 중입니다. 다음 단계에서는 httpd를 NetBox용 리버스 프록시로 설치 및 설정합니다.

httpd를 리버스 프록시로 설정

NetBox가 Gunicorn과 함께 WSGI 응용 프로그램으로 실행되면 이제 httpd 웹 서버를 NetBox용 리버스 프록시로 설치하고 구성합니다. httpd 패키지를 설치하고 새 httpd 가상 호스트 파일을 만든 다음 httpd 서비스를 시작하고 활성화합니다. 마지막으로 HTTP 및 HTTPS 포트를 열도록 방화벽을 설정합니다.

아래 dnf 명령을 실행하여 httpd 웹 서버를 설치합니다. 확인 메시지가 표시되면 y를 입력하고 ENTER를 눌러 계속 진행합니다.

sudo dnf install httpd

다음으로 아래 nano 편집기 명령을 사용하여 새 httpd 가상 호스트 파일 /etc/httpd/conf.d/netbox.conf를 만듭니다.

sudo nano /etc/httpd/conf.d/netbox.conf

파일에 다음 줄을 추가하고 도메인 이름 netbox.hwdomain.io를 도메인으로 변경해야 합니다. 이 가상 호스트를 사용하여 포트 8001에서 WSGI 응용 프로그램으로 실행되는 NetBox 응용 프로그램에 대한 리버스 프록시로 httpd를 설정합니다.

<VirtualHost *:80>
    ProxyPreserveHost On

    # CHANGE THIS TO YOUR SERVER'S NAME
    ServerName netbox.hwdomain.io

    Alias /static /opt/netbox/netbox/static

    <Directory /opt/netbox/netbox/static>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>

    <Location /static>
        ProxyPass !
    </Location>

    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
    ProxyPass / http://127.0.0.1:8001/
    ProxyPassReverse / http://127.0.0.1:8001/
</VirtualHost>

파일을 저장하고 완료되면 편집기를 종료합니다.

다음으로 아래 apachectl 명령을 실행하여 httpd 구성을 확인합니다. 그리고 적절한 httpd 구성이 있는 경우 Syntax OK와 같은 출력을 받아야 합니다.

sudo apachectl configtest

이제 아래의 systemctl 명령 유틸리티를 실행하여 httpd 웹 서버를 시작하고 활성화하십시오.

sudo systemctl start httpd
sudo systemctl enable httpd

그런 다음 httpd 웹 서버를 확인하여 서비스가 실행 중인지 확인하십시오. httpd 웹 서버가 실행 중이고 활성화되어 있다는 출력을 수신해야 합니다. 이는 httpd 웹 서버가 부팅 시 자동으로 시작됨을 의미합니다.

sudo systemctl status httpd

이를 염두에 두고 NetBox 응용 프로그램이 실행 중이며 액세스할 수 있습니다. 그러나 그 전에 방화벽에서 HTTP 및 HTTPS 포트를 모두 열어야 합니다.

아래의 firewall-cmd 명령을 실행하여 HTTP 및 HTTPS 서비스를 엽니다. 그런 다음 방화벽을 다시 로드하여 변경 사항을 적용합니다.

sudo firewall-cmd --add-servic={http,https} --permanent
sudo firewall-cmd --reload

아래 명령을 통해 방화벽 상태를 확인합니다.

sudo firewall-cmd --list-all

이와 같은 출력은 HTTP 및 HTTPS 서비스가 firewalld에 추가되었음을 보여줍니다.

이제 NetBox 웹 응용 프로그램이 실행되고 액세스 가능합니다. NetBox 설치에 액세스할 수 있지만 안전하지 않은 HTTP 프로토콜을 사용합니다. 다음 단계에서는 Certbot 및 Letsencrypt를 통해 SSL/TLS 인증서로 NetBox 배포를 보호합니다.

SSL Letsencrypt로 NetBox IRM 보안

이 단계에서는 Certbot 및 Letsencrypt를 통해 생성할 수 있는 SSL/TLS 인증서로 NetBox 설치를 보호합니다. 시작하기 전에 도메인 이름이 서버 IP 주소를 가리키는지 확인하십시오. 또한 Letsencrypt에 등록하는 데 사용할 이메일 주소가 있는지 확인하십시오.

아래의 dnf 명령을 통해 Certbot 도구와 httpd/Apache 플러그인을 설치합니다.

sudo dnf install certbot python3-certbot-apache

메시지가 표시되면 y를 입력하고 ENTER를 눌러 계속 진행합니다.

Certbot이 설치된 후 아래 명령을 실행하여 도메인 이름에 대한 SSL/TLS 인증서를 생성합니다. 또한 다음 명령에서 도메인 이름과 이메일 주소를 반드시 변경하십시오.

sudo certbot --apache2 --agree-tos --redirect --hsts --staple-ocsp --email  -d netbox.hwdomain.io

이 명령은 도메인 이름에 대한 새 SSL/TLS 인증서를 생성합니다. 또한 httpd 가상 호스트 구성에서 자동으로 HTTPS를 설정하고 NetBox 가상 호스트 파일에 대해 HTTP에서 HTTPS로 자동 리디렉션을 설정합니다. Certbot SSL/TLS 인증서는 /etc/elstencrypt/live/netbox.hwdomain.io/ 디렉토리에 생성됩니다.

NetBox에 로그인

웹 브라우저를 열고 NetBox 설치의 도메인 이름(예: https://netbox.hwdomain.io/)을 방문합니다.

NetBox 설치의 기본 홈페이지가 표시됩니다. 이것은 NetBox 설치의 미리보기와 같습니다.

오른쪽 상단 메뉴에서 로그인 버튼을 클릭하면 NetBox 로그인 화면으로 리디렉션됩니다.

관리자 사용자 및 암호로 로그인한 다음 로그인을 클릭합니다.

NetBox에 대한 적절하고 올바른 사용자 및 암호가 있으면 이제 NetBox 관리 대시보드에 로그인해야 합니다.

이로써 PostgreSQL, Redis, Gunciron 및 httpd 웹 서버로 NetBox IRM 설치가 완료되었습니다.

결론

이 자습서에서는 IRM(Infrastructure Resource Modeling) 소프트웨어 NetBox를 Rocky Linux 9 서버에 설치했습니다. Rocky Linux 서버에서 PostgreSQL 데이터베이스 서버, Redis를 캐시 관리로, httpd 웹 서버를 리버스 프록시로 NetBox를 구성했습니다.

자습서를 통해 PostgreSQL에서 인증을 설정하고, Redis에서 인증을 활성화하고, httpd를 역방향 프록시로 설정하고, Certbot 및 Letsencrypt를 통해 SSL/TLS 인증서로 NetBox를 보호하는 방법도 배웠습니다.

NeBox가 완전히 설치되면 이제 NetBox를 데이터 센터에 통합하거나, REST API와의 통합을 추가하거나, LDAP, Azure AD 및 Okta를 통해 SSO(Single Sign-On) 백엔드로 타사 인증을 추가할 수 있습니다.