SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
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
本セッションの概要

OpenStackが提供する各コンポーネントが利用
する認証基盤OpenStack Identity(keystone)の概
要と認証・認可の仕組み、利用のされ方につい
て紹介する約30分のセッションです。




               OpenStack Study #9
目次
●
    自己紹介
●
    OpenStack Identity(keystone)について
●
    keystoneの構造
●
    認証・認可の仕組み
●
    普通の利用方法
●
    ちょっと変わった利用方法
●
    まとめ


                    OpenStack Study #9
自己紹介
●
    なまえ:
    –   齊藤 秀喜 (さいとう ひでき)
    –   TwitterId: @saito_hideki
●
    しごと:
    –   クラウド関連のちょっとした開発
    –   クラウド関連のちょっとした運用
    –   クラウド関連のちょっとした火消しとかお詫び
●
    しゅみ:
    –   OpenStack(嗜む程度)

                            OpenStack Study #9
OpenStack Identity(keystone)について
OpenStackの各コンポーネントが利用する共
通の認証基盤としてシステム全体に統合認証
機能を提供しています。
OpenStackを利用する上では嫌でもダダをこ
ねても避けて通ることはできない重要なサー
ビスです。
                           goo辞書によると....
                           1 《建築》(アーチ頂上の)かなめ石,
                           くさび石.
                           2 (組織の)中枢, 中心;(学説などの
                           )根本原理.



             OpenStack Study #9
OpenStack Identity(keystone)について
各コンポーネントとの相関図は以下のような
感じ。コレは動かないと結構ヤバそう。




                            OpenStack Compute Administration Manualより転載

             OpenStack Study #9
認証・認可の仕組み
実際に認証と認可の仕組みを追ってみる。キーワー
ドは以下の4つ。
●
    ユーザID/パスワード
    –   認証とトークンを取得するのに必要なユーザIDとパスワード
●
    トークン
    –   認証成功時に発行されるAPIアクセスに必須となる許可証
●
    テナント
    –   仮想リソースをグループ化したもの。ユーザは所属するテナントに対
        して認可された操作権を持つ。
●
    エンドポイント
    –   指定テナント内でユーザに認可されたサービスとそのAPIのURL情報

                    OpenStack Study #9
認証・認可の仕組み
keystone-allはクライアントからのリクエスト
(RESTベース)を処理することにより認証・認可
を行う。POSTする情報はjsonまたはxml形式。

    client                                keystone-all

              (1)ユーザID/パスワードでトークンを要求
                      (2)トークン                        backend

                (3)権限を持つテナント情報を要求
                    (4)テナントリスト
             (5)テナントに対するエンドポイント情報を要求
               (6)認可されているエンドポイントリスト


                     OpenStack Study #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
認証・認可の仕組み
(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
認証・認可の仕組み
(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
認証・認可の仕組み
(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
認証・認可の仕組み
(3)権限を持つテナント情報を要求
(4)テナントリスト取得

{
                                                           keystone-allから返されるテナント
    "tenants": [                                           情報は、リストとなっているので
       {                                                   注意。1つだけでも当然リストと
         "description": "Default Tenant",
                                                           なる。
         "enabled": true,
         "id": "7695c8332c1b4450a6be1376b3a1f5c4",         次の段階のエンドポイントリスト
         "name": "openstackDemo"                           を取得するには、このテナントID
       }                                                   を利用する。
    ],
    "tenants_links": []
}




                                      OpenStack Study #9
認証・認可の仕組み
(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
認証・認可の仕組み
(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
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
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
普通の利用方法
それぞれのコンポーネントでkeystoneを利用す
るための設定が必要。

1. keystone自身の設定
2. novaからkeystoneを利用するための設定
3. glanceからkeystoneを利用するための設定


ココを参考に設定してください!

http://d.hatena.ne.jp/pyde/20121111/



                       OpenStack Study #9
普通の利用方法

keystoneコマンドを利用して初期情報を登録し
ます。

1. テナントの登録
2. ユーザの登録
3. ロールの登録
4. テナント・ユーザ・ロールの関連付け
5. ec2互換APIを利用する場合はec2クレデンシャルを登録

ココを参考にして作ってください!
http://aikotobaha.blogspot.jp/2012/04/openstackessex-configuration-02keystone.html

                                 OpenStack Study #9
ちょっと変わった利用方法
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
ちょっと変わった利用方法
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
ちょっと変わった利用方法
続いて、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
ちょっと変わった利用方法
もちろん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
ちょっと変わった利用方法
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
ちょっと変わった利用方法
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
まとめ
●
    keystoneは本当に重要なサービスです。大嫌いでもダダをこねて
    も逃げられません。
●
    OpenStackの主要コンポーネントが共通の認証基盤として利用し
    ています。各コンポーネント側にkeystoneを利用するための設定
    が必要です。
●
    keystoneは認証したアカウントにトークンを発行します。
●
    各コンポーネントでkeystone認証を利用する場合、APIリクエス
    トヘッダにはkeystoneが発行したトークンを”X-Auth-Token”とし
    て付与する必要があります
●
    ユーザはkeystoneから認可された操作のみ行うことができます。




                    OpenStack Study #9
ご清聴ありがとうございました




     OpenStack Study #9

Weitere ähnliche Inhalte

Was ist angesagt?

BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門Yohei Sasaki
 
Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積
Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積
Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積Takeshi Mikami
 
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~Michio Koyama
 
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~Michio Koyama
 
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~Michio Koyama
 
PHP Object Injection入門
PHP Object Injection入門PHP Object Injection入門
PHP Object Injection入門Yu Iwama
 
Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"Michio Koyama
 
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~Akabane Hiroyuki
 
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~Michio Koyama
 
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~Michio Koyama
 
人狼知能セミナー資料20160427
人狼知能セミナー資料20160427人狼知能セミナー資料20160427
人狼知能セミナー資料20160427Fujio Toriumi
 
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applicationstotty jp
 

Was ist angesagt? (15)

BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
 
Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積
Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積
Rails3+devise,nginx,fluent,S3構成でのアクセスログ収集と蓄積
 
Hbstudy41 auto scaling
Hbstudy41 auto scalingHbstudy41 auto scaling
Hbstudy41 auto scaling
 
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
 
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
 
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
 
PHP Object Injection入門
PHP Object Injection入門PHP Object Injection入門
PHP Object Injection入門
 
Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"
 
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
 
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
 
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
 
Mongodb 紹介
Mongodb 紹介Mongodb 紹介
Mongodb 紹介
 
人狼知能セミナー資料20160427
人狼知能セミナー資料20160427人狼知能セミナー資料20160427
人狼知能セミナー資料20160427
 
はじめてのMongoDB
はじめてのMongoDBはじめてのMongoDB
はじめてのMongoDB
 
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applications
 

Ähnlich wie OpenStack Study#9 JOSUG

OAuth 2.0 と ライブラリ
OAuth 2.0 と ライブラリOAuth 2.0 と ライブラリ
OAuth 2.0 と ライブラリKenji Otsuka
 
OpenID_Connect_Spec_Demo
OpenID_Connect_Spec_DemoOpenID_Connect_Spec_Demo
OpenID_Connect_Spec_DemoRyo Ito
 
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライAzure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライMasanobu Sato
 
OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Connect - Nat Sakimura at OpenID TechNight #7OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Connect - Nat Sakimura at OpenID TechNight #7OpenID Foundation Japan
 
リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)Mariko Goda
 
Couchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 OmoidenoteCouchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 Omoidenotekitsugi
 
初めての Data api
初めての Data api初めての Data api
初めての Data apiYuji Takayama
 
The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9Ryo Ito
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣Yuji Takayama
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -Yuji Takayama
 
Kai = (Dynamo + memcache API) / Erlang
Kai = (Dynamo + memcache API) / ErlangKai = (Dynamo + memcache API) / Erlang
Kai = (Dynamo + memcache API) / ErlangTakeru INOUE
 
OAuth 2.0 MAC Authentication
OAuth 2.0 MAC AuthenticationOAuth 2.0 MAC Authentication
OAuth 2.0 MAC AuthenticationRyo Ito
 
Oracle xeインストール(linux環境)
Oracle xeインストール(linux環境)Oracle xeインストール(linux環境)
Oracle xeインストール(linux環境)izuyuri
 
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014Takashi Yahata
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2Atsuo 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...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...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 APIOpenStack API
OpenStack API
 
OAuth 2.0 と ライブラリ
OAuth 2.0 と ライブラリOAuth 2.0 と ライブラリ
OAuth 2.0 と ライブラリ
 
OpenID_Connect_Spec_Demo
OpenID_Connect_Spec_DemoOpenID_Connect_Spec_Demo
OpenID_Connect_Spec_Demo
 
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライAzure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライ
 
OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Connect - Nat Sakimura at OpenID TechNight #7OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Connect - Nat Sakimura at OpenID TechNight #7
 
リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)
 
Couchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 OmoidenoteCouchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 Omoidenote
 
初めての Data api
初めての Data api初めての Data api
初めての Data api
 
The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9The 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 どうでしょう - 大阪夏の陣
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
 
後期02
後期02後期02
後期02
 
Kai = (Dynamo + memcache API) / Erlang
Kai = (Dynamo + memcache API) / ErlangKai = (Dynamo + memcache API) / Erlang
Kai = (Dynamo + memcache API) / Erlang
 
20111203
2011120320111203
20111203
 
OAuth 2.0 MAC Authentication
OAuth 2.0 MAC AuthenticationOAuth 2.0 MAC Authentication
OAuth 2.0 MAC Authentication
 
Oracle xeインストール(linux環境)
Oracle xeインストール(linux環境)Oracle xeインストール(linux環境)
Oracle xeインストール(linux環境)
 
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] 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...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...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これからはじめるAnsible - Ansible Night Tokyo 2024
これからはじめるAnsible - Ansible Night Tokyo 2024Hideki Saito
 
Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021Hideki Saito
 
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Hideki Saito
 
Ansible Fest 2020 技術トピックまとめ
Ansible Fest 2020 技術トピックまとめAnsible Fest 2020 技術トピックまとめ
Ansible Fest 2020 技術トピックまとめHideki Saito
 
Getting Started - Ansible Galaxy NG
Getting Started - Ansible Galaxy NGGetting Started - Ansible Galaxy NG
Getting Started - Ansible Galaxy NGHideki Saito
 
Ansible troubleshooting 101_202007
Ansible troubleshooting 101_202007Ansible troubleshooting 101_202007
Ansible troubleshooting 101_202007Hideki Saito
 
How to contribute code to ansible awx
How to contribute code to ansible awxHow to contribute code to ansible awx
How to contribute code to ansible awxHideki Saito
 
Update: Ansible Tower 3.6.0
Update: Ansible Tower 3.6.0Update: Ansible Tower 3.6.0
Update: Ansible Tower 3.6.0Hideki Saito
 
OpenStackSDK with Ansible
OpenStackSDK with AnsibleOpenStackSDK with Ansible
OpenStackSDK with AnsibleHideki Saito
 
How to contribute AWX
How to contribute AWXHow to contribute AWX
How to contribute AWXHideki Saito
 
Ansible Tower on OpenShift
Ansible Tower on OpenShiftAnsible Tower on OpenShift
Ansible Tower on OpenShiftHideki Saito
 
IT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWXIT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWXHideki Saito
 
IT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWXIT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWXHideki Saito
 
Ansible handson ood2016
Ansible handson ood2016Ansible handson ood2016
Ansible handson ood2016Hideki Saito
 
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化Hideki Saito
 
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編Hideki Saito
 

Mehr von Hideki Saito (20)

これからはじめるAnsible - Ansible Night Tokyo 2024
これからはじめるAnsible - Ansible Night Tokyo 2024これからはじめるAnsible - Ansible Night Tokyo 2024
これからはじめるAnsible - Ansible Night Tokyo 2024
 
Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021
 
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021
 
Ansible Fest 2020 技術トピックまとめ
Ansible Fest 2020 技術トピックまとめAnsible Fest 2020 技術トピックまとめ
Ansible Fest 2020 技術トピックまとめ
 
Getting Started - Ansible Galaxy NG
Getting Started - Ansible Galaxy NGGetting Started - Ansible Galaxy NG
Getting Started - Ansible Galaxy NG
 
Ansible troubleshooting 101_202007
Ansible troubleshooting 101_202007Ansible troubleshooting 101_202007
Ansible troubleshooting 101_202007
 
How to contribute code to ansible awx
How to contribute code to ansible awxHow to contribute code to ansible awx
How to contribute code to ansible awx
 
Update: Ansible Tower 3.6.0
Update: Ansible Tower 3.6.0Update: Ansible Tower 3.6.0
Update: Ansible Tower 3.6.0
 
OpenStackSDK with Ansible
OpenStackSDK with AnsibleOpenStackSDK with Ansible
OpenStackSDK with Ansible
 
How to contribute AWX
How to contribute AWXHow to contribute AWX
How to contribute AWX
 
Ansible Tower on OpenShift
Ansible Tower on OpenShiftAnsible Tower on OpenShift
Ansible Tower on OpenShift
 
IT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWXIT 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/AWXIT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWX
 
Ansible with AWX
Ansible with AWXAnsible with AWX
Ansible with AWX
 
Ansible101
Ansible101Ansible101
Ansible101
 
Ansible handson ood2016
Ansible handson ood2016Ansible handson ood2016
Ansible handson ood2016
 
Ansible handson
Ansible handsonAnsible handson
Ansible handson
 
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化
 
OpenStack Now!
OpenStack Now!OpenStack Now!
OpenStack Now!
 
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編
 

Kürzlich hochgeladen

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~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自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Kürzlich hochgeladen (8)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~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自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

OpenStack Study#9 JOSUG