2014년 12월 27일 토요일

['나는 한다 Openstack 설치를' 시리즈 3편]매뉴얼대로 Centos에 openstack icehouse 설치하기, keystone 설치하기

['나는 한다 Openstack 설치를' 시리즈 3편]매뉴얼대로 Centos에 openstack icehouse 설치하기, keystone 설치하기

openstack의 보안에서 가장 핵심이 되는 keystone을 설치하겠습니다. keystone의 구동 방식을 표현한 그림을 첨부하겠습니다. 그림을 보면 금방 이해하실 수 있을 겁니다.
잘 안 보이시면 클릭해서 보셔도 됩니다.

keystone 설치하기


keystone은 controller node에서만 설치하시면 됩니다.

1. openstack-keystone python-keystoneclient

# yum install -y openstack-keystone python-keystoneclient

2. keystone 데이터베이스를 생성하는 명령어입니다. 두번째 줄의 keysone_dbpass에는 사용하시고자 하는 keystone의 비밀번호를 넣어주세요. localhost 부분은 

# openstack-config --set /etc/keystone/keystone.conf \
   database connection mysql://keystone:KEYSTONE_DBPASS@controller/keystone

3. mysql에 root로 접속을 합니다.

#mysql -u root -p

4. keystone 데이터베이스 유저를 생성하는 과정입니다. 여기서도 keystone_dbpass에는 위에서 넣은 keystone 비밀번호와 같은 것을 입력하면 됩니다. 

mysql> CREATE DATABASE keystone;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';  // 'keystone'@'localhost' 이 부분에서 localhost는 keystone 데이터베이스 생성할 때 넣었던 컴퓨터 이름이랑 맞춰주세요.
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'controller' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';
mysql> exit

5. keystone 서비스를 위한 데이터베이스 테이블을 만드는 과정입니다.

# su -s /bin/sh -c "keystone-manage db_sync" keystone

6. 공유된 암호를 이용하여 인증 서비스와 다른 오픈스택 서비스간에 사용권한 토큰을 정의하기 위해 openssl을 이용하여 임의의 토큰을 생성하고 생성된 토큰을 conf 파일에 저장하는 과정입니다.

# ADMIN_TOKEN=$(openssl rand -hex 10)
# echo $ADMIN_TOKEN
# openstack-config --set /etc/keystone/keystone.conf DEFAULT \
   admin_token $ADMIN_TOKEN

7. 생성된 데이터에 대한 엑세스를 제한하고 서명키와 인증서를 생성합니다.

# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone

# chown -R keystone:keystone /etc/keystone/ssl

# chmod -R o-rwx /etc/keystone/ssl

8. keystone 시작 및 chkconfig에 등록하기

# service openstack-keystone start

# chkconfig openstack-keystone on

9. 기본적으로 인증 서비스는 만료된 토큰을 데이터베이스에 무기한으로 저장하기 때문에 크론을 이용하여 주기적으로 제거해주는 것이 좋습니다. 

# (crontab -l -u keystone 2>&1 | grep -q token_flush) || \
echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log 2>&1' >> /var/spool/cron/keystone

users, tenants, roles 설정하기


keystone을 설치하고 나면 users, tenants, roles 등을 설정해야 합니다.

1. token 만들기, admin_token에는 /etc/keystone/keystone.conf 파일에 있는 admin_token을 입력해줍니다.

$ export OS_SERVICE_TOKEN=ADMIN_TOKEN(예:vn13ndlasienc)

$ export OS_SERVICE_ENDPOINT=http://192.168.137.201:35357/v2.0

2. admin user 만들기

$ keystone user-create --name=admin --pass=<비밀번호> --email=<email주소>

3. admin role 만들기

$ keystone role-create --name=admin

4. admin tenant 만들기

$ keystone tenant-create --name=admin --description="Admin Tenant"

5. user, role, tenant 연결하기

$ keystone user-role-add --user=admin --tenant=admin --role=admin

6. 일반 user 만들기

$ keystone user-create --name=demo --pass=<비밀번호> --email=<email주소>

$ keystone tenant-create --name=demo --description="Demo Tenant"

$ keystone user-role-add --user=demo --role=_member_ --tenant=demo

7. service tenant 만들기

$ keystone tenant-create --name=service --description="Service Tenant"

services와 API 끝점 설정하기


1. service 엔트리 만들기

$ keystone service-create --name=keystone --type=identity \
  --description="OpenStack Identity"

$ keystone endpoint-create \
  --service-id=$(keystone service-list | awk '/ identity / {print $2}') \
  --publicurl=http://192.168.137.201:5000/v2.0 \
  --internalurl=http://192.168.137.201:5000/v2.0 \
  --adminurl=http://192.168.137.201:35357/v2.0

인증서비스 설치 확인하기


1. 인증서비스가 잘 설치되었는지 확인하기 위하여 OS_SERVICE_TOKEN 와 OS_SERVICE_ENDPOINT 지우기

$ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT

2. admin의 인증 토큰을 활용하여 일반 user 이름 기반 인증 사용하기

$ keystone --os-username=admin --os-password=<비밀번호> \
  --os-auth-url=http://192.168.137.201:35357/v2.0 token-get

3. admin-openrc.sh 파일 설정하기

# vi /root/admin-openrc.sh

밑의 내용을 입력해주세요.
export OS_USERNAME=admin
export OS_PASSWORD=<비밀번호>
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://192.168.137.201:35357/v2.0

4. admin-openrc.sh 파일 적용하기

$ source admin-openrc.sh

5. admin-openrc.sh 파일이 적용 잘 되었는지 확인하기

$ keystone token-get

6. 일반 유저 sh 파일 만들기

#vi /root/demo-openrc.sh

밑의 내용을 입력해주세요.

export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_TENANT_NAME=demo
export OS_AUTH_URL=http://192.168.137.1:35357/v2.0

7. user 확인하기

$ keystone user-list

$ keystone user-role-list --user admin --tenant admin

여기까지 해서 에러없이 모두 잘 나온다면 인증 서비스(keystone) 설정에 문제가 없는 것입니다.

댓글 없음:

댓글 쓰기