Suche senden
Hochladen
OpenStack Study#9 JOSUG
•
19 gefällt mir
•
3,124 views
Hideki Saito
Folgen
日本OpenStackユーザ会 第9回 勉強会 OpenStack Identityについて
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 27
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについて
Shoichi Takagi
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Kazuki Nakajima
Twitter連携chrome extension作り方
Twitter連携chrome extension作り方
Hiroshi Oyamada
5分でわかったつもりになるParse.com
5分でわかったつもりになるParse.com
Kenta Tsuji
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発
Shinzo SAITO
はじめてのCouch db
はじめてのCouch db
Eiji Kuroda
Gaej Jdo
Gaej Jdo
katsu.taira
Active Directoryデータのプロパティ出力(Output Properties)
Active Directoryデータのプロパティ出力(Output Properties)
Michio Koyama
Empfohlen
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについて
Shoichi Takagi
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Kazuki Nakajima
Twitter連携chrome extension作り方
Twitter連携chrome extension作り方
Hiroshi Oyamada
5分でわかったつもりになるParse.com
5分でわかったつもりになるParse.com
Kenta Tsuji
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発
Shinzo SAITO
はじめてのCouch db
はじめてのCouch db
Eiji Kuroda
Gaej Jdo
Gaej Jdo
katsu.taira
Active Directoryデータのプロパティ出力(Output Properties)
Active Directoryデータのプロパティ出力(Output Properties)
Michio Koyama
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
Yohei Sasaki
Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積
Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積
Takeshi Mikami
Hbstudy41 auto scaling
Hbstudy41 auto scaling
Fujishiro Takuya
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
Michio Koyama
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
Michio Koyama
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
Michio Koyama
PHP Object Injection入門
PHP Object Injection入門
Yu Iwama
Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"
Michio Koyama
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
Akabane Hiroyuki
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
Michio Koyama
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
Michio Koyama
Mongodb 紹介
Mongodb 紹介
Ryo Matsumura
人狼知能セミナー資料20160427
人狼知能セミナー資料20160427
Fujio Toriumi
はじめてのMongoDB
はじめてのMongoDB
Keisuke Izumiya
Html5 Web Applications
Html5 Web Applications
totty jp
OpenStack API
OpenStack API
Akira Yoshiyama
OAuth 2.0 と ライブラリ
OAuth 2.0 と ライブラリ
Kenji Otsuka
OpenID_Connect_Spec_Demo
OpenID_Connect_Spec_Demo
Ryo Ito
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライ
Masanobu Sato
OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Foundation Japan
リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)
Mariko Goda
Couchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 Omoidenote
kitsugi
Weitere ähnliche Inhalte
Was ist angesagt?
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
Yohei Sasaki
Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積
Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積
Takeshi Mikami
Hbstudy41 auto scaling
Hbstudy41 auto scaling
Fujishiro Takuya
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
Michio Koyama
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
Michio Koyama
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
Michio Koyama
PHP Object Injection入門
PHP Object Injection入門
Yu Iwama
Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"
Michio Koyama
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
Akabane Hiroyuki
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
Michio Koyama
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
Michio Koyama
Mongodb 紹介
Mongodb 紹介
Ryo Matsumura
人狼知能セミナー資料20160427
人狼知能セミナー資料20160427
Fujio Toriumi
はじめてのMongoDB
はじめてのMongoDB
Keisuke Izumiya
Html5 Web Applications
Html5 Web Applications
totty jp
Was ist angesagt?
(15)
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積
Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積
Hbstudy41 auto scaling
Hbstudy41 auto scaling
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
PHP Object Injection入門
PHP Object Injection入門
Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
Mongodb 紹介
Mongodb 紹介
人狼知能セミナー資料20160427
人狼知能セミナー資料20160427
はじめてのMongoDB
はじめてのMongoDB
Html5 Web Applications
Html5 Web Applications
Ähnlich wie OpenStack Study#9 JOSUG
OpenStack API
OpenStack API
Akira Yoshiyama
OAuth 2.0 と ライブラリ
OAuth 2.0 と ライブラリ
Kenji Otsuka
OpenID_Connect_Spec_Demo
OpenID_Connect_Spec_Demo
Ryo Ito
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライ
Masanobu Sato
OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Foundation Japan
リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)
Mariko Goda
Couchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 Omoidenote
kitsugi
初めての Data api
初めての Data api
Yuji Takayama
The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9
Ryo Ito
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
Yuji Takayama
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
Yuji Takayama
後期02
後期02
Takenori Nakagawa
Kai = (Dynamo + memcache API) / Erlang
Kai = (Dynamo + memcache API) / Erlang
Takeru INOUE
20111203
20111203
小野 修司
OAuth 2.0 MAC Authentication
OAuth 2.0 MAC Authentication
Ryo Ito
Oracle xeインストール(linux環境)
Oracle xeインストール(linux環境)
izuyuri
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
Takashi Yahata
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FinTechLabs.io
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...
Shotaro Suzuki
Ähnlich wie OpenStack Study#9 JOSUG
(20)
OpenStack API
OpenStack API
OAuth 2.0 と ライブラリ
OAuth 2.0 と ライブラリ
OpenID_Connect_Spec_Demo
OpenID_Connect_Spec_Demo
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライ
OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Connect - Nat Sakimura at OpenID TechNight #7
リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)
Couchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 Omoidenote
初めての Data api
初めての Data api
The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
後期02
後期02
Kai = (Dynamo + memcache API) / Erlang
Kai = (Dynamo + memcache API) / Erlang
20111203
20111203
OAuth 2.0 MAC Authentication
OAuth 2.0 MAC Authentication
Oracle xeインストール(linux環境)
Oracle xeインストール(linux環境)
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...
Mehr von Hideki Saito
これからはじめるAnsible - Ansible Night Tokyo 2024
これからはじめるAnsible - Ansible Night Tokyo 2024
Hideki Saito
Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021
Hideki Saito
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021
Hideki Saito
Ansible Fest 2020 技術トピックまとめ
Ansible Fest 2020 技術トピックまとめ
Hideki Saito
Getting Started - Ansible Galaxy NG
Getting Started - Ansible Galaxy NG
Hideki Saito
Ansible troubleshooting 101_202007
Ansible troubleshooting 101_202007
Hideki Saito
How to contribute code to ansible awx
How to contribute code to ansible awx
Hideki Saito
Update: Ansible Tower 3.6.0
Update: Ansible Tower 3.6.0
Hideki Saito
OpenStackSDK with Ansible
OpenStackSDK with Ansible
Hideki Saito
How to contribute AWX
How to contribute AWX
Hideki Saito
Ansible Tower on OpenShift
Ansible Tower on OpenShift
Hideki Saito
IT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWX
Hideki Saito
IT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWX
Hideki Saito
Ansible with AWX
Ansible with AWX
Hideki Saito
Ansible101
Ansible101
Hideki Saito
Ansible handson ood2016
Ansible handson ood2016
Hideki Saito
Ansible handson
Ansible handson
Hideki Saito
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化
Hideki Saito
OpenStack Now!
OpenStack Now!
Hideki Saito
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編
Hideki Saito
Mehr von Hideki Saito
(20)
これからはじめるAnsible - Ansible Night Tokyo 2024
これからはじめるAnsible - Ansible Night Tokyo 2024
Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021
Ansible Fest 2020 技術トピックまとめ
Ansible Fest 2020 技術トピックまとめ
Getting Started - Ansible Galaxy NG
Getting Started - Ansible Galaxy NG
Ansible troubleshooting 101_202007
Ansible troubleshooting 101_202007
How to contribute code to ansible awx
How to contribute code to ansible awx
Update: Ansible Tower 3.6.0
Update: Ansible Tower 3.6.0
OpenStackSDK with Ansible
OpenStackSDK with Ansible
How to contribute AWX
How to contribute AWX
Ansible Tower on OpenShift
Ansible Tower on OpenShift
IT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWX
Ansible with AWX
Ansible with AWX
Ansible101
Ansible101
Ansible handson ood2016
Ansible handson ood2016
Ansible handson
Ansible handson
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化
OpenStack Now!
OpenStack Now!
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編
Kürzlich hochgeladen
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
Kürzlich hochgeladen
(8)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
OpenStack Study#9 JOSUG
1.
openstack
Open source software to build public and private clouds. About OpenStack Identity (keystone) Internet Initiative Japan Inc. / Japan OpenStack User Group さいとうひでき (twitterid: @saito_hideki) OpenStack Study #9
2.
本セッションの概要 OpenStackが提供する各コンポーネントが利用 する認証基盤OpenStack Identity(keystone)の概 要と認証・認可の仕組み、利用のされ方につい て紹介する約30分のセッションです。
OpenStack Study #9
3.
目次 ●
自己紹介 ● OpenStack Identity(keystone)について ● keystoneの構造 ● 認証・認可の仕組み ● 普通の利用方法 ● ちょっと変わった利用方法 ● まとめ OpenStack Study #9
4.
自己紹介 ●
なまえ: – 齊藤 秀喜 (さいとう ひでき) – TwitterId: @saito_hideki ● しごと: – クラウド関連のちょっとした開発 – クラウド関連のちょっとした運用 – クラウド関連のちょっとした火消しとかお詫び ● しゅみ: – OpenStack(嗜む程度) OpenStack Study #9
5.
OpenStack Identity(keystone)について OpenStackの各コンポーネントが利用する共 通の認証基盤としてシステム全体に統合認証 機能を提供しています。 OpenStackを利用する上では嫌でもダダをこ ねても避けて通ることはできない重要なサー ビスです。
goo辞書によると.... 1 《建築》(アーチ頂上の)かなめ石, くさび石. 2 (組織の)中枢, 中心;(学説などの )根本原理. OpenStack Study #9
6.
OpenStack Identity(keystone)について 各コンポーネントとの相関図は以下のような 感じ。コレは動かないと結構ヤバそう。
OpenStack Compute Administration Manualより転載 OpenStack Study #9
7.
認証・認可の仕組み 実際に認証と認可の仕組みを追ってみる。キーワー ドは以下の4つ。 ●
ユーザID/パスワード – 認証とトークンを取得するのに必要なユーザIDとパスワード ● トークン – 認証成功時に発行されるAPIアクセスに必須となる許可証 ● テナント – 仮想リソースをグループ化したもの。ユーザは所属するテナントに対 して認可された操作権を持つ。 ● エンドポイント – 指定テナント内でユーザに認可されたサービスとそのAPIのURL情報 OpenStack Study #9
8.
認証・認可の仕組み keystone-allはクライアントからのリクエスト (RESTベース)を処理することにより認証・認可 を行う。POSTする情報はjsonまたはxml形式。
client keystone-all (1)ユーザID/パスワードでトークンを要求 (2)トークン backend (3)権限を持つテナント情報を要求 (4)テナントリスト (5)テナントに対するエンドポイント情報を要求 (6)認可されているエンドポイントリスト OpenStack Study #9
9.
認証・認可の仕組み Openstackのクライアントがendpointを取得する 動きをpythonスクリプトで再現してみる。 #!/usr/bin/env python #-*- coding:
utf-8 -*- get_token() (1)ユーザID/パスワードからトークンを要求 from getpass import getpass from httplib import HTTPConnection (2)トークン取得 Import json user = raw_input("user: ") password = getpass("password: ") get_tenant() session = HTTPConnection("%s:%s" % (HOST, PORT)) (3)権限を持つテナント情報を要求 auth_result = get_token(user, password, session) (4)テナントリスト取得 token = auth_result['access']['token']['id'] tenant_result = get_tenant(token, session) get_endpoint() (5)テナントに対するエンドポイント情報を要求 tenant = tenant_result["tenants"][0]["id"] endpoint_result = get_endpoint(token, tenant, session) (6)認可されているエンドポイントリスト取得 session.close() print "=" * 70 print json.dumps(auth_result, sort_keys=True, indent=2) print "-" * 70 print json.dumps(tenant_result, sort_keys=True, indent=2) OpenStack Study #9
10.
認証・認可の仕組み (1)ユーザID/パスワードでトークンを要求 (2)トークン取得
接続先URLは def get_token(user, password, session): http://<host>:<port>/v2.0/tokens token_path = "/v2.0/tokens" header = { "Content-Type": "application/json" } リクエストヘッダでデータ形式をjson に指定する。 request = ''' { "auth": { "passwordCredentials": { トークンを取得するAPIリクエストを "username":"%s", 生成する。 "password":"%s" } } }''' % (user, password) リクエスト送信!(POST) session.request("POST", token_path, request, header) keystone-allからトークンが返される。 return json.load(session.getresponse()) OpenStack Study #9
11.
認証・認可の仕組み (1)ユーザID/パスワードでトークンを要求 (2)トークン取得 {
"access": { keystone-allから返されるトークン "serviceCatalog": {}, "token": { 情報。リクエスト時にjson形式を "expires": "2012-11-18T05:23:51Z", 指定しているので形式は当然なが "id": "84e9f54aef284bf6a8dc79699045ad99" らjson形式となっている。 }, "user": { 以降のリクエストでは、ヘッダに "id": "d60717fe43e94c908bd9248b87d8e045", "name": "foo", X-Auth-Token: トークンID "roles": [], "roles_links": [], "username": "foo" を付加することにより認証された } リクエストであること証明する。 } } OpenStack Study #9
12.
認証・認可の仕組み (3)権限を持つテナント情報を要求 (4)テナントリスト取得
接続先URLは def get_tenant(token, session): http://<host>:<port>/v2.0/tenants tenant_path = "/v2.0/tenants" リクエストヘッダでデータ形式をjson header = { に指定するだけでなく、X-Auth-Token "Content-Type": "application/json", "X-Auth-Token": token, に取得済みのトークンIDを指定する。 } session.request("GET", tenant_path, "", header) リクエスト送信!(GET) return json.load(session.getresponse()) keystone-allからトークンが返される。 OpenStack Study #9
13.
認証・認可の仕組み (3)権限を持つテナント情報を要求 (4)テナントリスト取得 {
keystone-allから返されるテナント "tenants": [ 情報は、リストとなっているので { 注意。1つだけでも当然リストと "description": "Default Tenant", なる。 "enabled": true, "id": "7695c8332c1b4450a6be1376b3a1f5c4", 次の段階のエンドポイントリスト "name": "openstackDemo" を取得するには、このテナントID } を利用する。 ], "tenants_links": [] } OpenStack Study #9
14.
認証・認可の仕組み (5)テナントに対するエンドポイント情報を要求 (6)認可されているエンドポイントリスト取得 def get_endpoint(token, tenant,
session): 接続先URLは token_path = "/v2.0/tokens" http://<host>:<port>/v2.0/tokens header = { "Content-Type": "application/json", リクエストヘッダでデータ形式をjson "X-Auth-Token": token, } に指定するだけでなく、X-Auth-Token に取得済みのトークンIDを指定する。 endpoint_request = ''' { "auth": { 取得済みのトークンIDとテナントIDで "token": { "id":"%s" エンドポイント情報を取得するAPIリク }, エストを生成する。 "tenantId": "%s" } }''' % (token, tenant) リクエスト送信!(POST) session.request( "POST", "/v2.0/tokens" , endpoint_request, header) keystone-allからトークンが返される。 return json.load(session.getresponse()) OpenStack Study #9
15.
認証・認可の仕組み (5)テナントに対するエンドポイント情報を要求 (6)認可されているエンドポイントリスト取得 {
"access": { <!-- 中略 --> "serviceCatalog": [ { "endpoints": [ { "adminURL": "http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4", "id": "48567a3d0f7a40fc9aa57172b9cc46e8", "internalURL": "http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4", "publicURL": "http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4", "region": "RegionOne" } ], "endpoints_links": [], "name": "nova", "type": "compute" keystone-allから返されるエンドポイント }, 情報の中にnova/glanceなどのリソースを <!-- 中略 --> } 操作するためのAPIのURLが含まれる OpenStack Study #9
16.
keystoneの構造 ●
本体: keystone-all ● keystone-allの認証/認可用バックエンド – KVS Backend – SQL Backend REST API – PAM Backend keystone-all – Template Backend <keystone.conf内> driver=keystone.identity.backends.* – LDAP Backend KVS SQL PAM Template LDAP OpenStack Study #9
17.
keystoneの構造 SQLバックエンドで見るkeystoneのデータ構造 mysql> show
tables; ● keystoneのSQLバックエンドデータベ +------------------------+ ースのテーブル数はessex / folsom と | Tables_in_keystone | もに10個 +------------------------+ ● migrate_versionテーブルに記録されて | ec2_credential | | endpoint | いるデータベースのバージョン情報は | metadata | 上がっている。 | migrate_version | ● essex : 1 | role | ● folsom: 4 | service | ● データ構造的に見ると変更箇所はtoken | tenant | テーブルにvalidフィールドが追加と | token | なったのみ。 | user | ● tokenテーブルに発行されたtokenが延 | user_tenant_membership | 々と登録され続けていくんだけど... +------------------------+ 10 rows in set (0.00 sec) これ溢れないのかな? OpenStack Study #9
18.
普通の利用方法 それぞれのコンポーネントでkeystoneを利用す るための設定が必要。 1. keystone自身の設定 2. novaからkeystoneを利用するための設定 3.
glanceからkeystoneを利用するための設定 ココを参考に設定してください! http://d.hatena.ne.jp/pyde/20121111/ OpenStack Study #9
19.
普通の利用方法 keystoneコマンドを利用して初期情報を登録し ます。 1. テナントの登録 2. ユーザの登録 3.
ロールの登録 4. テナント・ユーザ・ロールの関連付け 5. ec2互換APIを利用する場合はec2クレデンシャルを登録 ココを参考にして作ってください! http://aikotobaha.blogspot.jp/2012/04/openstackessex-configuration-02keystone.html OpenStack Study #9
20.
ちょっと変わった利用方法 keystone認証させつつ、novaコマンドと同等の 動きをするpythonスクリプトを書いてみる。 例えばflavorのリスト取得。これが..... $ export OS_USERNAME=foo
keystone認証のための情報 $ export OS_PASSWORD=bar $ export OS_TENANT_NAME=openstackDemo を環境変数に設定する。 $ export OS_AUTH_URL="http://172.16.100.14:5000/v2.0" $ nova flavor-list +----+------------+-----------+------+-----------+------+-------+-------------+ | ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | +----+------------+-----------+------+-----------+------+-------+-------------+ | 1 | m1.tiny | 512 | 0 | 0 | | 1 | 1.0 | | 2 | m1.small | 2048 | 10 | 20 | | 1 | 1.0 | | 3 | m1.medium | 4096 | 10 | 40 | | 2 | 1.0 | | 4 | m1.large | 8192 | 10 | 80 | | 4 | 1.0 | | 5 | m1.xlarge | 16384 | 10 | 160 | | 8 | 1.0 | | 6 | m1.minimal | 64 | 0 | 0 | | 1 | 1.0 | +----+------------+-----------+------+-----------+------+-------+-------------+ OpenStack Study #9
21.
ちょっと変わった利用方法 keystoneさえマスターすれば、こんな感じに pythonでもワンライナーで簡単に書ける! 渾身のワンライナーでflavorリストを取得する $ python -c
'from httplib import HTTPConnection as c;from json import load as l;s=c("172.16.100.100:5000");s.request("POST","/v2.0/tokens","{"auth": {"tenantName":"openstackDemo","passwordCredentials":{"username":"foo","password":"bar"}}}",{"Content- Type":"application/json"});j=l(s.getresponse());s.close();tk=j["access"]["token"]["id"];tn=j["access"] ["serviceCatalog"][0]["endpoints"][0]["publicURL"].split("/")[- 1];s.close();s=c("172.16.100.100:8774");s.request("GET","/v2/%s/flavors"%tn,"",{"X-Auth- Token":tk});j=l(s.getresponse());s.close();print [(x["id"],x["name"],x["links"][0]["href"]) for x in j["flavors"]]' 結果(なんかそれっぽい!) [(u'1', u'm1.tiny', u'http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4/flavors/1'), (u'2', u'm1.small', u'http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4/flavors/2'), (u'3', u'm1.medium', u'http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4/flavors/3'), (u'4', u'm1.large', u'http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4/flavors/4'), (u'5', u'm1.xlarge', u'http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4/flavors/5'), (u'6', u'm1.minimal', u'http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4/flavors/6')] OpenStack Study #9
22.
ちょっと変わった利用方法 続いて、OSイメージのリストも取得してみる。 先ほど既に環境変数としてkeystone認証に必要 となる情報を設定しているのでnovaコマンドで 取得できる。 $ nova image-list +--------------------------------------+-------------------+--------+--------+ |
ID | Name | Status | Server | +--------------------------------------+-------------------+--------+--------+ | c9ef36c7-e6f4-414e-b603-257e36836e76 | tty-linux | ACTIVE | | | 732ccc6c-093f-4ff3-88ec-d2c97df45014 | tty-linux-kernel | ACTIVE | | | 1d51d35e-cd1f-4205-9e62-d249e439536b | tty-linux-ramdisk | ACTIVE | | +--------------------------------------+-------------------+--------+--------+ OpenStack Study #9
23.
ちょっと変わった利用方法 もちろんpythonのワンライナーでも簡単。 渾身のワンライナーでimageリストを取得する $ python -c
'from httplib import HTTPConnection as c;from json import load as l;s=c("172.16.100.100:5000");s.request("POST","/v2.0/tokens","{"auth": {"tenantName":"openstackDemo","passwordCredentials":{"username":"foo","password":"bar"}}}",{"Content- Type":"application/json"});j=l(s.getresponse());s.close();tk=j["access"]["token"]["id"];tn=j["access"] ["serviceCatalog"][0]["endpoints"][0]["publicURL"].split("/")[- 1];s.close();s=c("172.16.100.100:8774");s.request("GET","/v2/%s/images"%tn,"",{"X-Auth- Token":tk});j=l(s.getresponse());s.close();print [(x["id"],x["links"][0]["href"]) for x in j["images"]]' 結果(これまたなんとなく取れてる気がする!) [(u'c9ef36c7-e6f4-414e-b603-257e36836e76', u'http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4/images/c9ef36c7-e6f4-414e-b603-257e36836e76'), (u'1d51d35e-cd1f-4205-9e62-d249e439536b', u'http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4/images/1d51d35e-cd1f-4205-9e62-d249e439536b'), (u'732ccc6c-093f-4ff3-88ec-d2c97df45014', u'http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4/images/732ccc6c-093f-4ff3-88ec-d2c97df45014')] OpenStack Study #9
24.
ちょっと変わった利用方法 UIなしでVMも作れます! じゃぁじゃぁ...渾身のワンライナーでVMインスタンスを作成! ※このあたりでsessionって1回張ればいいじゃない?って気がつくけど面倒だからそのまま。 $ python -c
'from httplib import HTTPConnection as c;from json import load as l;s=c("172.16.100.100:5000");s.request("POST","/v2.0/tokens","{"auth": {"tenantName":"openstackDemo","passwordCredentials":{"username":"foo","password":"bar"}}}",{"Content- Type":"application/json"});j=l(s.getresponse());s.close();tk=j["access"]["token"]["id"];tn=j["access"] ["serviceCatalog"][0]["endpoints"][0]["publicURL"].split("/")[- 1];s.close();s=c("172.16.100.100:8774");s.request("POST","/v2/%s/servers"%tn,"{"server": {"name":"josug009","imageRef":"c9ef36c7-e6f4-414e-b603- 257e36836e76","flavorRef":"6","OS_DCF:diskConfig":"MANUAL"}}",{"Content-Type":"application/json","X-Auth- Token":tk});j=l(s.getresponse());s.close();print j' 結果(おぉ!できた!のか!?) {u'server': {u'links': [{u'href': u'http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4/servers/2e81b265-0a33-416d-b60c-afc511395279', u'rel': u'self'}, {u'href': u'http://172.16.100.100:8774/7695c8332c1b4450a6be1376b3a1f5c4/servers/2e81b265-0a33- 416d-b60c-afc511395279', u'rel': u'bookmark'}], u'OS-DCF:diskConfig': u'MANUAL', u'id': u'2e81b265-0a33-416d-b60c- afc511395279', u'security_groups': [{u'name': u'default'}], u'adminPass': u'vhcq2X8G4eXz'}} OpenStack Study #9
25.
ちょっと変わった利用方法 VMインスタンスのリスト取得だってUI不要。 渾身のワンライナーでちょいちょいのドーンよ! $ python -c
'from httplib import HTTPConnection as c;from json import load as l;s=c("172.16.100.100:5000");s.request("POST","/v2.0/tokens","{"auth": {"tenantName":"openstackDemo","passwordCredentials":{"username":"foo","password":"bar"}}}",{"Content- Type":"application/json"});j=l(s.getresponse());s.close();tk=j["access"]["token"]["id"];tn=j["access"] ["serviceCatalog"][0]["endpoints"][0]["publicURL"].split("/")[- 1];s.close();s=c("172.16.100.100:8774");s.request("GET","/v2/%s/servers"%tn,"",{"X-Auth- Token":tk});j=l(s.getresponse());s.close();print [(x["id"],x["name"],x["links"][0]["href"]) for x in j["servers"]]' 結果(できてるw) [(u'2e81b265-0a33-416d-b60c-afc511395279', u'josug009', u'http://172.16.100.100:8774/v2/7695c8332c1b4450a6be1376b3a1f5c4/servers/2e81b265-0a33-416d-b60c-afc511395279')] OpenStack Study #9
26.
まとめ ●
keystoneは本当に重要なサービスです。大嫌いでもダダをこねて も逃げられません。 ● OpenStackの主要コンポーネントが共通の認証基盤として利用し ています。各コンポーネント側にkeystoneを利用するための設定 が必要です。 ● keystoneは認証したアカウントにトークンを発行します。 ● 各コンポーネントでkeystone認証を利用する場合、APIリクエス トヘッダにはkeystoneが発行したトークンを”X-Auth-Token”とし て付与する必要があります ● ユーザはkeystoneから認可された操作のみ行うことができます。 OpenStack Study #9
27.
ご清聴ありがとうございました
OpenStack Study #9
Jetzt herunterladen