no about note

エンジニアのメモ書き

【Openstack】プロジェクト・ユーザ・ロールについて

rolê !

用語集

プロジェクト

  • プロジェクトとは、ユーザーの割り当てが可能な、クラウド内の組織単位のこと
  • プロジェクト=テナント=アカウントである
  • ユーザーは、多数のプロジェクトに所属することは可能で最低でも 1つのプロジェクトと関連付ける必要がある
  • 【Openstack】プロジェクト・ユーザ・ロールについての解説
  • 仮想マシンや仮想ネットワークなどの管理単位で、ユーザーは権限のないテナント内の仮想マシンや仮想ネットワークについては操作・閲覧できない

ユーザ

  • Openstackを操作するユーザのこと
  • Keystoneで管理される
  • インスタンスにログインするユーザとは別物

ロール(role)

  • ユーザーが実行できるアクションを定義する。
  • ユーザーとプロジェクトのペアに割り当てる。
  • ロールのアクションは /etc//policy.jsonファイルに定義される
  • 例えば、Compute Service のロールが実行可能なアクションは /etc/nova/policy.json ファイルで定義する

オペレーション

keystoneコマンドは廃止された

プロジェクト作成

## プロジェクト一覧
# openstack project list

## プロジェクト作成
# project create -h
Usage:openstack project create --description "<description>" <project-name>
# openstack project create --description "Demo Project" demo

ユーザ作成

# openstack user create --password-prompt demo-user
User Password: ******
Repeat User Password: *****

ロール割り当て

## ロール一覧
# openstack role list
+----------------------------------+------------------+
| ID                               | Name             |
+----------------------------------+------------------+
| 01db5ff8fda04b1f8156f92c3dafcbb5 | ResellerAdmin    |
| 03ff15e6b5ce4ec0b59a61d1791cdd30 | heat_stack_user  |
| 897748bcc16a4ab7a4ad4689ffd04d59 | admin            |
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_         |
| b865c86512f2485d924b5e12596121c6 | SwiftOperator    |
| c3e248d784f7493e9eacf139a14c3731 | heat_stack_owner |
+----------------------------------+------------------+

## _member_ ロールをdemoプロジェクトとdemoユーザに追加
# openstack role add --project demo --user demo-user _member_
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 9fe2ff9ee4384b1894a90878d3e92bab |
| name      | _member_                         |
+-----------+----------------------------------+

クライアント環境スクリプトの作成

## クライアント環境スクリプトの作成
# vi /mnt/nfs/packstack/keystonerc_demo-user
unset OS_SERVICE_TOKEN
export OS_USERNAME=demo-user
export OS_PASSWORD=*******
export PS1='[\u@\h \W(keystone_demo-user)]\$ '
export OS_AUTH_URL=http://172.16.0.31:5000/v2.0

export OS_TENANT_NAME=demo-user
export OS_IDENTITY_API_VERSION=2.0

## クライアント環境スクリプト読込
# source /root/keystonerc_demo-user

## トークン情報を取得
# openstack token issue
+------------+----------------------------------+
| Field      | Value                            |
+------------+----------------------------------+
| expires    | 2016-04-19T11:46:23.396779Z      |
| id         | 8f8ba9bb81a84229b8784e8cf8fe5046 |
| project_id | bf1b0188cb884b9da04ecacaaad14705 |
| user_id    | dac2344e88b349208c26aa53ecae9f2f |
+------------+----------------------------------+

policy.jsonについて

  • policy.jsonファイルは、各コンポーネントごとに権限を設定する
  • 例えば、ユーザが作成したvmを他ユーザが勝手に削除できないように、などを細かく設定が可能
  • 書き方の詳細は以下参考に

参考:
* Appendix A. The policy.json file
* 【OpenStackチャレンジ】 第6回 policy.json紹介編
* OpenStackのpolicy.jsonを個別ユーザ仕様にする

参考