Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

これからLDAPを始めるなら「389-ds」を使ってみよう

Osc2021nagoya-sunbit-20210529

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

  • Be the first to like this

これからLDAPを始めるなら「389-ds」を使ってみよう

  1. 1. これからLDAPを始めるなら 「389-ds」を使ってみよう OSC2021 online 名古屋 2021年5月29日 有限会社サンビットシステム 佐々木伸幸
  2. 2. 2 きょうお話すること ● 389-dsとは ● 389-dsを使ってみよう ● インストール手順と初期動作まで ● ldapコマンド ● 389-dsを制御するコマンド ● 389-dsの設定値たち ● 389-dsのスキーマ管理 ● これまでのデータを389-dsで使う
  3. 3. 3 389-dsとは ● LDAPv3サーバ ● Fedora Projectで開発 ● https://directory.fedoraproject.org/ ● GPLv3で配布 ● 389-ds ≒ Redhat Directory Server ● RHEL, Fedora, CentOSは標準装備 ● 「信頼性」「パフォーマンス」「スケーラ ビリティ」がキャッチフレーズ
  4. 4. 4 389-dsとは ● 2020/06時点での最新版は1.4系列 ● 1.3系はRedHat7用 ● 1.4系はRedHat8用、1.4.xはRedhat8.x用 ● Debian, openSUSEにもパッケージがある ● HP-UX, Solarisサポートもあった ● 2016年に1.3系でFreeBSDの実験的ポート ● しかし方向性は移植より安定継続... ● cockpitによる管理GUIがある
  5. 5. 5 389-dsとは ● OSとの対応 2020/05 2021/05 https://directory.fedoraproject.org/docs/389ds/design/design.html
  6. 6. 6 389-dsとは Feature Design Documentsで気になる 389 Directory Server 1.4.4 ● Replication Agreement Bootstrap Credentials ● Replication Changelog moved into main database ● Openldap to 389 Migration ● Mapping Tree Assembly Rework OpenLDAPからの移行機能が計画中てこと?
  7. 7. 7 389-dsとは:成り立ち ● この他、389-dsの開発経緯とか は、OSC2020北海道の発表資料に記述し ています。 https://www.slideshare.net/nobuyukisasaki165/ centos-8-389ds ご興味があればご覧ください。
  8. 8. 8 389-dsを使ってみよう ● インストール手順と初期動作まで ● ldapコマンド ● 389-dsを制御するコマンド ● 389-dsの設定値たち ● 389-dsのスキーマ管理 ● これまでのデータを389-dsで使う
  9. 9. 9 389-dsを使ってみよう ● 朗報:日本語マニュアルが出ました! https://access.redhat.com/documentation/ja-jp/ red_hat_directory_server/11 (公開資料:RHNアカウント不要) ● RedHat Directory Serverのものですが、389- dsと同じです。 ● CentOSの導入方法は記述されていません。 (だってそうでしょ?そりゃそうだもん。)
  10. 10. 10 389-ds インストール ● よく見るインストール手順 ● 確認:dnf module list | grep 389 389-ds 1.4 389 Directory Server (base) ● 有効化: dnf module enable 389-ds ● インストール: dnf install 389-ds-base ● この手順はRHEL/CentOSではcockpit環境 は得られない ● RedHatはIDMの一部と捉えている様子
  11. 11. 11 389-ds インストール ● port389.orgにある手順 ● EPELを入れる:dnf install epel-release ● EPELの389-directory-serverモジュールから インストールする(RHEL/CentOS8.1以降) dnf module install 389-directory-server:stable/default ● インストールされるパッケージ python3-lib389 389-ds-base-libs cockpit-389-ds 389-ds-base
  12. 12. 12 389-ds コマンドによる初期設定手順 [root@cent82 ~]# dscreate interactive Install Directory Server (interactive mode) =========================================== Enter system's hostname [cent82.3bit.co.jp]: [enter] Enter the instance name [cent82]: [enter] Enter port number [389]: [enter] Create self-signed certificate database [yes]: [enter] Enter secure port number [636]: [enter] Enter Directory Manager DN [cn=Directory Manager]: [enter] Enter the Directory Manager password: (パスワード) Confirm the Directory Manager Password: (パスワード) Enter the database suffix (or enter "none" to skip)  [dc=cent82,dc=3bit,dc=co,dc=jp]: dc=example,dc=jp Create sample entries in the suffix [no]: [enter] Create just the top suffix entry [no]: yes Do you want to start the instance after the installation? [yes]: [enter] Are you ready to install? [no]: yes Starting installation... Completed installation for cent82 [root@cent82 ~]# ps ax | grep dirsrv 6909 ? Ssl 0:02 /usr/sbin/ns-slapd -D /etc/dirsrv/slapd-cent82 -i /run/dirsrv/slapd-cent82.pid 管理アカウントの デフォルトは cn=Directory Manager suffixのデフォルトは ホストのFQDN
  13. 13. 13 389-ds インストール ● その他の設定手順については OSC2020北海道の資料をご覧ください。 https://www.slideshare.net/nobuyukisasaki165/ centos-8-389ds GUIによる設定 証明書ストア管理 LDAPS設定についても書いてます。 ● 今回は「使ってみよう」の想定なので...
  14. 14. 14 ldapコマンド ● 389-dsが独自で提供するldapコマンド は、ありません。 ● openldap-clientsパッケージに含まれるコ マンドを使用します。 (ldapsearch, ldapadd, ldapmodify…) ● 2021現在、389-ds自体にはLDAPブラウ ザ的な機能はないので、Apache Directory Studioなどを併用しましょう。
  15. 15. 15 389-dsを制御するコマンド ● dscreate: インスタンスの作成 ● dsctl : サーバの制御 ● dsconf : 設定値の変更
  16. 16. 16 389-dsを制御するコマンド: dscreate ● dscreate: インスタンスの作成 ● dscreate from-file: 定義ファイルから作成 ● dscreate interactive: 対話的に作成 (dscreate interactive の動作例は既出です)
  17. 17. 17 389-dsを制御するコマンド: dsctl ● dsctl: サーバの動作制御 ● 書式: dsctl instance subcommand instance: 対象のインスタンス名 subcommand: start サーバ起動 stop サーバ停止 restart サーバ再起動 status 起動状態表示 remove インスタンス削除 db2bak バックアップ作成 backups バックアップリスト表示 bak2db バックアップ復元
  18. 18. 18 389-dsを制御するコマンド: dsctl [root@centos82 ~]# dsctl centos82 status Instance "centos82" is running [root@centos82 ~]# dsctl centos82 db2bak db2bak: Can not operate while directory server is running db2bak failed [root@centos82 ~]# dsctl centos82 stop Instance "centos82" has been stopped [root@centos82 ~]# dsctl centos82 db2bak db2bak successful [root@centos82 ~]# dsctl centos82 start Instance "centos82" has been started [root@centos82 ~]# dsctl centos82 backups Backup: /var/lib/dirsrv/~/bak/centos82-2021_05_25_18_15_24 - 2021-05-25 18:15:24 (11M)
  19. 19. 19 389-dsを制御するコマンド: dsconf ● dsconf: 設定値の変更 ● 書式: dsconf instance subcommand ● instance: 対象のインスタンス名 subcommand: backend バックエンド関連 backup バックアップ関連 config 設定値関連 security LDAPS関連 directory_manager 管理ユーザパスワード (まだありますが、略します)
  20. 20. 20 設定コマンド: dsconf backend ● backendはsuffixに対応したデータベース ● 何もしなければroot suffixは1つのデータ ベース ● suffixを作る毎にそれぞれ1つのデータベー スが作成される ● sub suffixを作成してroot suffixとは別の 管理にすることもできる ● openldapのDB backendのみ(な感じ)
  21. 21. 21 設定コマンド: dsconf backend ● 2つのroot suffix がある場合 ● example.jp と 3bit.co.jpの2つのDBができる。 dc=example,dc=jp dc=3bit,dc=co,dc=jp ou=group,dc=3bit,dc=co,dc=jp ou=user,dc=3bit,dc=co,dc=jp ou=group,dc=example,dc=jp ou=user,dc=example,dc=jp
  22. 22. 22 設定コマンド: dsconf backend ● 1つのroot suffix にsub suffixがある場合 ● example.jp とext.example.jpの2つのDBができる。 ● BASE DNをdc=example,dc=jpで検索した場合 dc=ext,dc=example,dc=jp配下は得られない。 dc=example,dc=jp ou=ext,dc=example,dc=jp ou=group,ou=ext,dc=example,dc=jp ou=user,ou=ext,dc=example,dc=jp ou=group,dc=example,dc=jp ou=user,dc=example,dc=jp
  23. 23. 23 設定コマンド: dsconf backend [root@centos82 ~]# dsconf centos82 backend suffix list cn=changelog (changelog) cn=example,dc=jp (example.jp) [root@centos82 ~]# dsconf centos82 backend get dc=example,dc=jp dn: cn=example.jp,cn=ldbm database,cn=plugins,cn=config cn: example.jp nsslapd-cachememsize: 402653184 nsslapd-cachesize: -1 nsslapd-directory: /var/lib/dirsrv/slapd-centos82/db/example.jp nsslapd-dncachememsize: 67108864 nsslapd-readonly: off nsslapd-require-index: off nsslapd-require-internalop-index: off nsslapd-suffix: dc=example,dc=jp objectClass: top objectClass: extensibleObject objectClass: nsBackendInstance backendのリスト backend毎にパラメータ調整や indexを設定できる
  24. 24. 24 設定コマンド: dsconf backup ● DBのバックアップ、リストアを行う ● オンラインで可能 – バックアップは取得できるがdsconfコマンド ではバックアップ名を検索する方法がない! ● バックアップの検索は dsctl backups で ● dsctl instance backups
  25. 25. 25 設定コマンド: dsconf backup [root@centos82 ~]# dsconf centos82 backup create The backup create task has finished successfully [root@centos82 ~]# dsctl centos82 backups Backup: /var/lib/dirsrv/slapd-centos82/bak/centos82-2021_05_25_18_15_24 - 2021-05-25 18:15:24 (11M) Backup: /var/lib/dirsrv/slapd-centos82/bak/centos82-2021_05_25_18_47_16 - 2021-05-25 18:47:16 (11M) [root@centos82 ~]# dsconf centos82 backup restore centos82-2021_05_25_18_47_16 The backup restore task has finished successfully dsctlコマンドでbackupを探して リストアしたい バックアップ名を指定する バックアップ
  26. 26. 26 設定コマンド: dsconf config ● 多分最も使われるサブコマンド ● 設定値を変更する ● (やってることはldapmodifyなのでは...) ● LDAPSに関連する設定値は dsconf security サブコマンドで行う
  27. 27. 27 設定コマンド: dsconf config [root@centos82 ~]# dsconf centos82 config replace nsslapd-unhashed-pw- switch=on Successfully replaced "nsslapd-unhashed-pw-switch" [root@centos82 ~]# dsconf centos82 config get nsslapd-unhashed-pw-switch nsslapd-unhashed-pw-switch: on root@centos82 ~]# dsconf centos82 config get dn: cn=config cn: config nsslapd-SSLclientAuth: allowed nsslapd-accesscontrol: on nsslapd-accesslog: /var/log/dirsrv/slapd-shapeldap8/access ... Windows同期に設定必須 nsslapd-unhashed-pw-switch=on の設定 変更可能な設定値一覧の表示
  28. 28. 28 設定コマンド: dsconf security ● LDAPSに関連する設定値を変更する ● コマンドラインに指定するパラメータはconfigと 違ってLDAPの属性値そのものではない ● コマンドラインパラメータと、対象となる属性 値の対応表はない! ● 管理ガイドや設定リファレンスがないとコマン ドラインのハードルは高いと思われる。
  29. 29. 29 設定コマンド: dsconf security ● /etc/dirsrv/インスタンス/dse.conf の書換 dn: cn=RSA,cn=encryption,cn=config objectClass: top objectClass: nsEncryptionModule cn: RSA nsSSLPersonalitySSL: centos82.example.jp - Sunbit System nsSSLActivation: on nsSSLToken: internal (software) ここを書き換えると 指定の証明書が使用される
  30. 30. 30 設定コマンド: dsconf security dn: cn=RSA,cn=encryption,cn=config ... nsSSLPersonalitySSL: centos82.example.jp - Sunbit System nsSSLActivation: on ここを書き換える場合 [root@cent82 slapd-centos82]# dsconf -D 'cn=Directory Manager' centos82 security rsa set --nss-cert-name TESTCERT [root@cent82 slapd-centos82]# grep nsSSLPersonal /etc/dirsrv/slapd- centos82/dse.ldif nsSSLPersonalitySSL: TESTCERT dsconf securityコマンドで変更する --nss-cert-name が nsSSLPersonalitySSLを変更する! ● LDAPSで使用する証明書を変える場合
  31. 31. 31 設定変更にdsconfを使う理由 ● dse.ldifを直接書き換えるのは インスタンス停止中でなければならない。 ● dsconfコマンドはインスタンスが起動中でもパ ラメータ変更が可能。 ● dsconfコマンドはパラメータのエラーを検出し てくれるが、手動で書き換えた場合typoすると インスタンスが起動しなくなる。 dsconfで変更できないパラメータ以外は、 dsconfを使いましょう。
  32. 32. 32 設定コマンド: dsconf directory_manager ● 'cn=Directory Manager' のパスワードを変更す るだけ。 [root@cent82 slapd-centos82]# dsconf centos82 directory_manager password_change Enter new directory manager password : (パスワード) CONFIRM - Enter new directory manager password : (パスワード) [root@cent82 slapd-centos82]#
  33. 33. 33 389-dsの設定値たち ● 389-dsの設定値は /etc/dirsrv/slapd-instance/ にある。(証明書ストアもここ) ● 389-dsのデータベースは /var/lib/dirsrv/slapd-instance/ にある。 ● 389-dsのビルトインスキーマは /usr/share/dirsrv/schema/ ユーザ設定スキーマは /etc/dirsrv/slapd-instance/99user.ldif
  34. 34. 34 389-dsの設定値たち ● 389-dsの初期設定値は /etc/dirsrv/slapd-instance/dse.ldif にある。 ● このファイルは389-dsの起動時に読み込まれ る。正常に起動されると /etc/dirsrv/slapd-instance/dse.ldif.startOK が作成される。 ● dsconfなどによる変更があると /etc/dirsrv/slapd-instance/dse.ldif.bak に変更前の状態が残る。 再起動しなくなった時に役立ちます。
  35. 35. 35 389-dsの設定値たち ● 389-dsの設定値はすべてデフォルト値が ある。 ● 全ての設定値がdse.ldifに記述されている わけではない。(未設定の値はデフォルト値が使 用されファイルには反映されない) ● 全設定値を見るにはldapsearchを使う。 (dsconf .. config get は全設定は表示しない) [root@cent82 slapd-centos82]# ldapsearch -D 'cn=Directory Manager' -W -x -b cn=config onjectclass=*
  36. 36. 36 389-dsの設定値たち ● 変更したら再起動が必要な機能も設定値に ある。(下記は全てではありません) [root@cent82 slapd-centos82]# dsconf centos82 config get | grep restart nsslapd-requiresrestart: cn=config:nsslapd-port nsslapd-requiresrestart: cn=config:nsslapd-secureport nsslapd-requiresrestart: cn=config:nsslapd-ldapifilepath nsslapd-requiresrestart: cn=config:nsslapd-ldapilisten nsslapd-requiresrestart: cn=config:nsslapd-workingdir nsslapd-requiresrestart: cn=config:nsslapd-plugin nsslapd-requiresrestart: cn=config:nsslapd-sslclientauth nsslapd-requiresrestart: cn=config:nsslapd-changelogdir nsslapd-requiresrestart: cn=config:nsslapd-changelogsuffix nsslapd-requiresrestart: cn=config:nsslapd-changelogmaxentries nsslapd-requiresrestart: cn=config:nsslapd-changelogmaxage nsslapd-requiresrestart: cn=config:nsslapd-db-locks nsslapd-requiresrestart: cn=config:nsslapd-maxdescriptors ポート番号の変更 プラグインに対する変更 ファイルディスクリプタ数の変更
  37. 37. 37 389-dsの設定値たち ● dsconf configコマンドを使用して動作中 に設定値を変更することができる。 (ldapmodifyを使用して変更も可能) ● 例えばauditlog [root@cent82 slapd-centos82]# dsconf centos82 config get | grep logging- enable nsslapd-accesslog-logging-enabled: on nsslapd-auditfaillog-logging-enabled: off nsslapd-auditlog-logging-enabled: off nsslapd-errorlog-logging-enabled: on [root@cent82 slapd-centos82]# dsconf centos82 config replace nsslapd- auditlog-logging-enabled=on Successfully replaced "nsslapd-auditlog-logging-enabled" [root@cent82 slapd-centos82]# dsconf centos82 config get nsslapd-auditlog- logging-enabled nsslapd-auditlog-logging-enabled: on
  38. 38. 38 389-dsの設定値たち ● 設定値はコア設定値に限ってもマニュアル 上で200項目以上あります。 ● 設定、コマンド及びファイルリファレンス を参照してください。 https://access.redhat.com/documentation/ja-jp/ red_hat_directory_server/11
  39. 39. 39 389-dsのスキーマ管理 ● できる限り標準のスキーマを使う。 ● 独自のスキーマは /etc/dirsrv/instance/99user.ldif に定義する。 ● スキーマは原則レプリケーションされない ので、レプリケーション間では同じ設定に する。 ● openldapのスキーマファイルとは書式が 違う。
  40. 40. 40 389-dsのスキーマ管理 ● 389-dsの書式 (authldap.schemaの一部) objectClasses: ( 1.3.6.1.4.1.10018.1.2.1 NAME 'CourierMailAccount' DESC 'Mail account object as used by the Courier mail server' … attributeTypes: ( 1.3.6.1.4.1.10018.1.1.1 NAME 'mailbox' DESC 'The absolute path to the mailbox for a mail account in a non-default location' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) (authldap.schemaは389-ds標準ではありません) ● RFC2252に従っています。
  41. 41. 41 389-dsのスキーマ管理 ● openldapの書式 *.schema objectclass ( 1.3.6.1.4.1.10018.1.2.1 NAME 'CourierMailAccount' DESC 'Mail account object as used by the Courier mail server' ... attributetype ( 1.3.6.1.4.1.10018.1.1.1 NAME 'mailbox' DESC 'The absolute path to the mailbox for a mail account in a non-defau lt location' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) *.ldif olcObjectclasses: ( 1.3.6.1.4.1.10018.1.2.1 NAME 'CourierMailAccount' DESC 'Mail account object as used by the Courier mail server' ... olcAttributeTypes: ( 1.3.6.1.4.1.10018.1.1.1 NAME 'mailbox' DESC 'The absolute path to the mailbox for a mail account in a non-defau lt location' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
  42. 42. 42 389-dsのスキーマ管理 ● 過去の資産を移すなら、独自のスキーマは 再定義する必要がある。 ● openLDAPのスキーマ定義はRFC2252に 従った場合、接頭語olcがついている。 ● 書式が違うので、変換する必要がある。
  43. 43. 43 これまでのデータを389-dsで使う ● ここではopenldapを389-dsに移すことを 想定。 ● 389-dsプロジェクトは移行のための資料 を公開している。 https://directory.fedoraproject.org/docs/ 389ds/howto/howto-openldap-migration.html ● openldap_to_ds という自動移行ツールが あるみたい。 (私は見つけることができていません)
  44. 44. 44 これまでのデータを389-dsで使う ● howto-openldap-migrationの互換性リスト 機能 OpenLDAP 389-ds 互換性 双方向同期 SyncREPL 389独自 × MemberOf Overlay Plugin ○ (単純な構成のみ) External Auth SASL PTA Plugin △ (設定とデータ変更が必要) LDAP Proxy Proxy - × AD同期 - Winsync Plugin × システムスキーマ OLC形式 389形式(RFC2252) ○ (変換ツールがある) カスタムスキーマ OLC形式 389形式(RFC2252) ○ (変換ツールがある) DBインポート LDIF LDIF ○ (変換ツールがある) パスワードハッシュ 不定 不定 ○ (ARGON2を除く全て) ol 2 ds repl - - × ds 2 ol repl - SyncREPL ○ (あらびっくり!) EntryUUID システムの一部 プラグイン ○ (389-dsからOpenLDAPはSyncREPLできるのね。逆があれば… :-(
  45. 45. 45 これまでのデータを389-dsで使う ● 変換ツールを使用することでスキーマの移 行は可能 ● エントリはLDIFで移行可能 ● インデックス定義は移行できないので手動 で定義。 ● ACLも移行できないので手動で定義 ● 外部認証やOpenLDAPバックエンドが多彩 だと難しそう
  46. 46. 46 これまでのデータを389-dsで使う ● 変換ツール https://directory.fedoraproject.org/docs/389ds/ scripts.html ol2rhds.pl OpenLDAPスキーマをRFC2252形式に変換する (*.schema, *.ldifどちらの形式でも変換してくれる) openLDAP2Fedora.p l OpenLDAPのuserPasswordエントリを389-dsの形式に変 換する ol-schema-migrate.pl OpenLDAPの*.schema形式から接頭語olcを削除する ol-macro-exapnd.pl OpenLDAPの OIDマクロを展開する
  47. 47. 47 これまでのデータを389-dsで使う 1.カスタムスキーマをol2rhds.plで変換 2.変換したスキーマを389-dsの99user.ldifに定義 3.OpenLDAPのSuffix backend毎に分割してLDIF を取得 4.Suffix backendに合わせて389-ds側でbackend を定義する 5.suffix毎にLDIFをldapaddする 6.indexとACLの定義を頑張る
  48. 48. 48 これまでのデータを389-dsで使う ● 389-dsのACLの形式 aci: (target = "ldap:///ou=People,dc=example,dc=jp") (version 3.0; acl "Allow users to read and search attributes of own entry"; allow (search, read) (userdn = "userdn = "ldap:///self"); ) target: 対象となるツリーやエントリ allow: 許可される権限 userdn: 許可されるアクセス条件 意訳 ou=people,dc=example,dc=jp配下は(無条件に) 検索と読み込みが許可される (のは)認証されたユーザだけ
  49. 49. 49 これまでのデータを389-dsで使う 対象について target= ツリーやエントリを直接指定 targetattr= 対象となる属性値を指定 targetfilter= 対象となる属性値などの条件を指定 権限について OpenLDAPの OIDマクロを展開する read 読み取り write 属性の追加、修正、削除 search 検索 all すべて 条件について userdn= 特定ユーザや条件値 ldap:///uid=xxxxx: uidがxxxxxのユーザ限定 ldap:///self 認証されたユーザ限定 ldap:///all 認証されてないユーザも含めたアクセス userattr= manager#SELFDN 自身のエントリにmanager属性がある ● ACLの定義諸々 (使いそうな一部のみ)
  50. 50. 50 これまでのデータを389-dsで使う ● 複雑なACLは移行するときによく考えない と穴ができるので注意しましょう。 ● せっかく日本語マニュアルが公開されてい るので有効に活用しましょう。
  51. 51. 51 389-dsの未来 ● LDBMバックエンドの追加(1.4.4) ● OpenLDAP移行機能(1.4.4) ● セルフサービスWebポータル ● ユーザ自身でエントリの編集ができるUI ● TLSデータベース保護 ● pwdfile.txt, pin.txtの廃止? ● 同時接続の改善 ● Web UI用のLDAPエディタ(DIT,ACI編集)
  52. 52. 52   宣伝:ShapeLDAP
  53. 53. 53 宣伝:ShapeLDAP 定形LDAPツリーのユーザ管理WEBアプリケーション • 必要最小限のユーザ情報+エントリテンプレートで登録 • 管理者/パスワード管理者/ユーザの権限 • CSVによるユーザ登録/削除機能 • 389-dsの機能でWindows ADとアカウント同期できます • 実はSun Java DSの時代からやってます(2003) • 大学、高専など、定形で毎年大量のユーザ登録が発生する 環境でLDAPユーザ管理+Windowsユーザ管理を 一元化したい場合にお役に立ちます。
  54. 54. 54 有限会社サンビットシステム • 1998年8月設立  • 2009年より札幌市豊平区平岸 • オープンソースの活用で社会貢献 ● 港営業務システム「あまつみ®」の開発・運用 ● ShapeLDAP開発、販売 ● ITインフラ構築、ITシステム設計支援 ● ソフトウエア受託開発,パッケージ開発 ● IT教育など

    Be the first to comment

Osc2021nagoya-sunbit-20210529

Views

Total views

255

On Slideshare

0

From embeds

0

Number of embeds

112

Actions

Downloads

5

Shares

0

Comments

0

Likes

0

×