z/OSMF from the z/OS cmd line – Making Developers Lives Better

z/OSMF from the z/OS cmd line – Making Developers Lives Better

Foto oleh Florian Berger di Unsplash

z/OSMF memiliki beberapa layanan yang sangat keren. Salah satu yang baru-baru ini saya perhatikan adalah API untuk membaca dan memperbarui variabel sistem (yang dapat Anda anggap sebagai layanan untuk mengelola pasangan kunci/nilai). Layanan ini tidak boleh disamakan dengan simbol sistem z/OS klasik yang Anda gunakan di z/OS. z/OSMF API adalah tujuan umum: Anda dapat menyediakan hampir semua pasangan kunci/nilai yang Anda inginkan, sedangkan pasangan kunci/nilai sistem klasik harus pendek dan ada rekomendasi kuat bahwa Anda hanya memiliki sejumlah kecil.

Tetapi salah satu penghambat utama z/OSMF pada z/OS tidak dapat menggunakan sertifikat untuk kredensial saya dan harus menentukan userid dan kata sandi untuk API. Setelah banyak menggali dokumentasi dan diskusi dengan banyak orang, saya menyadari bahwa saya secara teoritis dapat mengatur sertifikat klien az/OSMF yang dapat saya gunakan untuk mengautentikasi ke z/OSMF daripada menentukan userid dan kata sandi.

Sistem z/OS saya yang saya gunakan berjalan pada zD&T yang memberi saya kemewahan untuk dapat belajar tentang pemrograman sistem z/OS dan hanya membuat mulas untuk diri saya sendiri dan tidak untuk orang lain. Jadi di sepanjang blog ini, saya mereferensikan sistem yang relatif umum dan tentu saja, sistem Anda mungkin akan berbeda (kecuali jika Anda juga menggunakan zD&T, dalam hal ini, mungkin sangat mirip!).

Semua diskusi z/OS di bawah ini menggunakan lingkungan z/OS Unix System Services. Saya menggunakan ssh untuk masuk dan sebagian besar pekerjaan saya di lingkungan itu.

Sebuah Langkah Mundur

Upaya awal saya untuk menyiapkan sertifikat gagal total. Sambungan akan gagal atau macet dan saya tidak yakin apa yang sedang terjadi, jadi saya memutuskan untuk mengatasi masalah terkait, tetapi semoga lebih mudah – yaitu dapat mengeluarkan permintaan z/OSMF dari Mac saya. Langkah pertama adalah menyalin sertifikat CA dari z/OS yang mengeluarkan sertifikat server z/OSMF, sehingga browser akan mengetahui bahwa ini adalah server yang dapat dipercaya. Ini berfungsi dengan baik untuk Firefox, tetapi tidak berfungsi untuk Safari. Ini membuat saya menyadari bahwa sertifikat server saya tidak dikonfigurasi dengan benar untuk Safari dan tidak dipercaya. Secara khusus, sertifikat saya adalah sertifikat SHA-1, memiliki tanggal kedaluwarsa terlalu jauh di masa mendatang dan tidak memiliki nama DNS server dalam ekstensi Nama Alternatif Subjek sertifikat. Kemudian saya menyadari bahwa CA saya juga salah. Itu adalah CA SHA-1, jadi saya harus membuat ulang CA juga. Sayangnya, pesan kesalahan untuk masalah ini sangat tidak jelas, tetapi akhirnya dengan banyak bantuan, saya menjalankannya.

Pada titik ini, saya masih harus menentukan userid dan kata sandi di browser web saya ketika saya ingin mengeluarkan panggilan API az/OSMF. Untuk langkah terakhir ini, saya membuat sertifikat klien pada z/OS yang saya impor ke browser saya. Kode untuk menghasilkan CA, sertifikat server, dan sertifikat klien cukup mudah. PERHATIKAN bahwa ini akan menghapus CA dan sertifikat LAMA, jadi harap baca kode sebelum menjalankan skrip dan, tentu saja, mungkin ada bug, jadi buat cadangan terlebih dahulu. Jika Anda menemukan bug, harap hubungi saya agar saya dapat memperbaikinya… Untuk menjalankan kode, Anda juga perlu mengkloning kode zospm, karena saya menggunakan beberapa skrip dari sana di bawah sampul.

Satu Langkah Maju:

Dengan sertifikat yang berfungsi dari Firefox dan Safari di Mac saya, saya siap untuk kembali ke tantangan awal saya mengemudikan az/OSMF API dari z/OS tanpa userid dan kata sandi.

Langkah pertama saya adalah memastikan saya dapat menjalankan GET API menggunakan userid dan kata sandi di z/OS. Saya mulai dengan layanan httpsget untuk melakukan GET variabel sistem, bersama dengan layanan JSON untuk memproses output JSON dan mengekstrak nilai variabel tertentu yang saya cari. Perhatikan bahwa layanan httpsget dan JSON telah diperbarui untuk blog ini, jadi pastikan Anda mendapatkan versi terbaru untuk eksperimen ini.

Dengan GET di tempat, saya melanjutkan ke POST (yaitu memperbarui variabel sistem), dan DELETE (yaitu menghapus variabel sistem). Nama asli saya untuk layanan POST adalah httpspost, dan layanan DELETE adalah httpsdelete. Pada titik ini, saya dapat menjalankan API dari baris perintah, menentukan userid dan kata sandi untuk httpsget, httpspost, dan httpsdelete. Saya menulis skrip bernama xsysvar (untuk variabel sistem yang diperluas) dengan antarmuka yang sangat sederhana:

Cetak nilai variabel:

variabel xsysvar

Tetapkan nilai variabel ke nilai:

variabel xsysvar=nilai

Hapus variabel:

xsysvar -d variabel

Saya tidak bisa menundanya lagi: sudah waktunya untuk mencoba lagi menggunakan sertifikat klien. Untuk layanan GET dan POST, saya harus meningkatkan antarmuka untuk mendukung label sertifikat dan cincin yang akan ditentukan alih-alih userid dan kata sandi. Dengan perubahan ini, saya menjalankan kodenya dan… kode itu menggantung… terkadang…

Jauh di Jawa di sisi z/OSMF rumah, saya menemukan bahwa koneksi gagal. Akhirnya, panggilan pada xsysvar akan habis dan gagal. Ada perbaikan yang sedang dikerjakan dan saya telah mendapatkan tambalan internal yang berfungsi, jadi saya yakin ini akan bekerja ‘segera sekarang’ – dan saya akan memperbarui blog ini setelah perbaikan tersedia secara umum dan/atau saya memiliki kerja yang wajar.

Menyatukannya

Berikut adalah langkah-langkah untuk membuat z/OSMF CA, sertifikat server, dan sertifikat klien baru, unduh CA dan sertifikat klien ke Mac Anda, instal CA dan sertifikat klien di browser Anda, lalu gunakan layanan variabel sistem z/OSMF dari Mac dan z/OS Anda tanpa userid atau password. Untuk kesederhanaan, sertifikat server dan klien dikeluarkan oleh z/OSMF CA. Langkah-langkah ini mengasumsikan Anda menggunakan RACF sebagai manajer keamanan Anda, Anda memiliki otoritas penuh untuk mengelola sertifikat dan memulai/menghentikan z/OSMF, Anda ingin membuat ulang semua sertifikat Anda, Anda memiliki akses tulis ke /tmp, dan sistem Anda telah dikonfigurasi untuk menggunakan z/OSMF, menggunakan default yang disediakan oleh IBM. Pastikan untuk membaca skrip genzosmfcert dan skrip yang dipanggilnya sebelum menjalankan skrip.

Instal Z Open Automation Utilities jika Anda belum melakukannya (gratis) Instal git jika Anda belum melakukannya (gratis) Klon zospm dan sampel git repo ke sistem z/OS Anda, periksa cabang untuk artikel ini, dan buat kode: mkdir $HOME/zosmfcli cd $HOME/zosmfcli git clone [email protected]:zospm/zospm.git cd zospm; git checkout remotes/Origin/zosmfcliarticle export PATH=$HOME/zosmfcli/zospm/bin:$PATH ./build.sh cd $HOME/zosmfcli git clone [email protected]:MikeFultonDev/samples.git cd sampel; git checkout remotes/Origin/zosmfcliarticle export PATH=$HOME/zosmfcli/samples/bin:$PATH ./build.sh Hentikan z/OSMF, jika sedang berjalan, gunakan perintah shell Z Open Automation Utilities opercmd. opercmd ‘stop izusvr1’ Buat sertifikat dalam RACF, dan buat sertifikat publik yang dapat Anda unduh di /tmp dengan menjalankan genzosmfcert. Jalankan dengan -v (verbose) yang akan mencetak gantungan kunci klien dan server. Untuk sintaks lengkap, masukkan: genzosmfcert -?
Untuk sistem saya, saya membuat sertifikat untuk userid IBMUSER dan ADCDA. cd $HOME genzosmfcert -v IBMUSER ADCDA opercmd ‘mulai izusvr1’

Anda akan memiliki sertifikat berikut di /tmp:

zosmfca-bin.der: Ini adalah z/OSMF CA baru Anda yang akan Anda impor ke browser Anda (Firefox) dan/atau gantungan kunci Mac (Safari)zosmf--bin.p12: Ini adalah klien z/OSMF baru Anda sertifikat untuk id yang akan Anda impor ke browser (Firefox) dan/atau gantungan kunci Mac (Safari)zosmf--crt.pem dan zosmf--key.pem: File-file ini dapat digunakan untuk bahasa seperti Python untuk mengakses z/OSMFPada klien Anda (misalnya laptop Mac, Windows atau Linux), gunakan sftp untuk melakukan transfer biner dari file zosmfca--bin.der dan zosmf--bin.p12 ke bawah ke laptop Anda dari z/OS.

Konfigurasi Browser Safari

Klik dua kali pada zosmfca-bin.der, lalu di UI Akses Rantai Kunci Anda, pilih Rantai Kunci Sistem dan kategori Sertifikat dan klik dua kali pada entri z/OSMF CertAuth untuk Domain Keamanan.Buka Trust twisty dan pilih Always Trust untuk mempercayai z/OSMF CA baru Anda. Klik X merah untuk menutup jendela. Klik dua kali sertifikat zosmf--bin.p12. Ini akan meminta Anda untuk kata sandi. Jika Anda tidak menentukan sandi alternatif, skrip genzosmfcert menggunakan zosmfClientCert. Buka zosmfcc twisty, lalu klik dua kali pada Sertifikat Klien z/OSMF. Klik pada tab Kontrol Akses dan pilih Izinkan semua aplikasi untuk mengakses item ini, lalu tutup sertifikat. Ini akan mencegah Anda dari diminta mual saat Anda pergi ke situs web.

Mengonfigurasi Firefox

Tidak seperti Safari, Firefox tidak menggunakan Akses KeyChain. Untuk mengonfigurasi Firefox, Anda perlu mengimpor CA dan sertifikat klien ke Firefox itu sendiri:

Buka Firefox -> Preferensi -> Privasi dan Keamanan

Klik Lihat Sertifikat dan pilih tab Otoritas, lalu klik tombol Impor untuk mengimpor Otoritas Sertifikat (CA) z/OSMF Anda:

Pilih file zosmfca-bin.der Anda dan pilih Percayai CA ini untuk mengidentifikasi situs web, lalu klik OK.

Sekarang pilih tab Sertifikat Anda lalu klik tombol Impor dan impor sertifikat Klien z/OSMF Anda zosmf--bin.p12. Ini akan meminta Anda untuk kata sandi. Jika Anda tidak menentukan sandi alternatif, skrip genzosmfcert menggunakan zosmfClientCert.

Menggunakan Browser Anda (Firefox atau Safari)

Browser Anda sekarang dikonfigurasi untuk terhubung langsung ke z/OSMF. Coba https://zosmfserver:zosmfport/zosmf/variables/rest/1.0/systems/sysplex.sysname di mana zosmfserver dan zosmfport adalah Server z/OSMF dan port z/OSMF yang telah Anda konfigurasikan dan sysplex dan sysname adalah sysplex dan nama sistem sistem z/OS Anda. Jika semuanya bekerja dengan benar, itu akan mencetak variabel sistem dalam JSON di layar Anda (daftar mungkin kosong jika Anda belum pernah menggunakan layanan ini sebelumnya). Jika Anda tidak yakin dengan nama sistem dan sysplex Anda, buka z/OS dan terbitkan:

opercmd ‘simbol d’ dan lihat &SYSNAME. dan &SYSPLEX. nilai-nilai.

Menggunakan z/OSMF pada z/OS

Sekarang saatnya untuk benar-benar menggunakan z/OSMF pada baris perintah. Kabar baiknya adalah ini jauh lebih mudah daripada mengutak-atik sertifikat pada klien, karena semua sertifikat ada di sana dengan baik tinggal di RACF menunggu Anda untuk menggunakannya.

Di z/OS, coba yang berikut ini:

xsysvar “house-key”=emas xsysvar “car-key”=biru xsysvar “shed-key”=ungu

Di sistem saya, saya dapat mengubah variabel sistem dari akun IBMUSER saya, tetapi saya hanya dapat membacanya dari akun ADCDA saya.

Sekarang, buka browser Anda, dan buka URL Anda lagi:

https://zosmfserver:zosmfport/zosmf/variables/rest/1.0/systems/sysplex.sysname

Anda akan melihat kunci emas, biru dan ungu di output JSON. Inilah yang saya lihat di layar Safari saya:

Catatan:

Konfigurasi Layanan Email JES2 menjelaskan cara mengkonfigurasi JES2 sebagai klien az/OSMF di z/OS. Ini mirip dengan apa yang kami lakukan untuk menyiapkan klien z/OSMF kami di z/OS. Saya merasa sangat sulit untuk menghapus sertifikat dan otoritas sertifikat yang buruk dari Firefox. Ternyata Anda dapat mengatur ulang Firefox dengan cukup mudah dengan tongkat besar (dan terkadang Anda membutuhkan tongkat besar). Buka: Bantuan -> Informasi Pemecahan Masalah -> Segarkan FirefoxSaya memasukkan panggilan pengatur waktu di sekitar permintaan HTTP di dalam https untuk mengetahui berapa lama waktu yang dibutuhkan panggilan API yang sebenarnya. Itu kira-kira 10 milidetik pada lingkungan yang ditiru zD&T. Waktu keseluruhan untuk menjalankan xsysvar untuk mendapatkan konten variabel adalah sekitar 400ms. Saya berharap menulis ulang kode ini dalam C dapat mengurangi waktu keseluruhan menjadi mungkin 20 ms, tetapi itu hanya perkiraan. Layanan variabel sistem z/OSMF tidak memiliki cara untuk mengambil hanya satu variabel sistem. Saya berharap ini akan diperbaiki, karena saya berharap ini menjadi permintaan umum, dan mengembalikan semua variabel sistem sepertinya banyak data yang tidak perlu. Layanan variabel sistem z/OSMF dikonfigurasi sehingga modifikasi variabel sistem z/OSMF memerlukan Akses BACA ke ZOSMF.VARIABLES.SYSTEM.ADMIN. Ini memastikan bahwa hanya orang yang tepat yang dapat membuat perubahan pada variabel ini. Saya belajar banyak dari UKM di sekitar IBM untuk menyusun artikel ini. Semua kesalahan adalah milikku. Saya ingin berterima kasih kepada Wai Choi, Blair Wyman, Onno van den Troost, Greg Keuken, Paul Newton, Hiren Shah, John Czukkerman, Xiao Zhen Zhu, Sean Keller, Galina Gorelik, Kurt Quackenbush, Jim LaBarge atas bantuan mereka di bidangnya masing-masing. keahlian.

Seperti ini:

Seperti Memuat…

Author: Douglas Hernandez