Artikel
Otorisasi Pengguna dalam Aplikasi Berbasis Layanan Mikro
Niklas Sänger * dan Sebastian Abeck
Kelompok Penelitian Kerjasama & Manajemen, Institut Teknologi Karlsruhe, 76131 Karlsruhe, Jerman;
sebastian.abeck@kit.edu
* Korespondensi: niklas.saenger@kit.edu
Abstrak: Layanan mikro telah muncul sebagai gaya arsitektur yang lazim dalam pengembangan
perangkat lunak modern, menggantikan arsitektur monolitik tradisional. Penguraian fungsionalitas
bisnis menjadi layanan mikro terdistribusi menawarkan banyak manfaat, tetapi memperkenalkan
peningkatan kompleksitas pada aplikasi secara keseluruhan. Akibatnya, kompleksitas otorisasi dalam
aplikasi berbasis layanan mikro membutuhkan pendekatan komprehensif yang mengintegrasikan
otorisasi sebagai komponen yang melekat sejak awal. Makalah ini menyajikan pendekatan
sistematis untuk mencapai otorisasi pengguna yang baik dengan menggunakan Kontrol Akses
Berbasis Atribut (ABAC). Pendekatan yang diusulkan menekankan pada pelestarian struktur,
memfasilitasi penelusuran di berbagai fase pengembangan aplikasi. Hasilnya, artefak otorisasi
dapat ditelusuri dengan mulus dari fase analisis awal hingga fase implementasi berikutnya. Salah
satu kontribusi yang signifikan adalah pengembangan bahasa untuk merumuskan persyaratan dan
kebijakan otorisasi bahasa alami. Kebijakan otorisasi bahasa alami ini kemudian dapat
diimplementasikan menggunakan bahasa kebijakan Rego. Dengan memanfaatkan analisis artefak
perangkat lunak, pendekatan yang diusulkan memungkinkan pembuatan kebijakan otorisasi yang
komprehensif dan disesuaikan.
Kata kunci: layanan mikro; otorisasi berbutir halus; ABAC; teknik; pelestarian struktur
1. Pendahuluan
Arsitektur layanan mikro telah menjadi gaya arsitektur yang sangat populer di dunia
pencarian dan industri [1-3]. Aplikasi berbasis layanan mikro menggantikan aplikasi
Kutipan: Sänger, N.; Abeck, S. monolitik dengan membagi logika bisnis menjadi layanan-layanan yang lebih kecil yang
Otorisasi Pengguna dalam Aplikasi melakukan tugas yang terdefinisi dengan baik dan relatif kecil [4]. Setiap layanan
Berbasis Layanan Mikro. Perangkat mengekspos fungsionalitasnya melalui Application Programming Interface (API) web.
Lunak 2023, 2, Ada beberapa paradigma API web, seperti Representational State Transfer (REST) [5]
400-426. https://doi.org/10.3390/ atau Remote Procedure Calls (RPC) [6], dengan spesifikasi yang paling populer adalah
software2030019 OpenAPI [7] dan gRPC [8]. Dengan spesifikasi API yang dirancang dengan baik, layanan mikro
Editor Akademik: Manuel Mazzara memungkinkan pembuatan layanan yang dapat digunakan kembali. Dalam makalah ini,
kami mengikuti gaya arsitektur yang dipresentasikan oleh Hippchen dkk. [9] dan Sidler
Diterima: 11 Agustus 2023
dkk. [10]. Fungsionalitas bisnis diimplementasikan dalam sebuah layanan mikro yang
Direvisi: 31 Agustus 2023
berada di lapisan aplikasi. Sebuah frontend yang berada di lapisan presentasi mengakses
Diterima: 5 September 2023
layanan mikro yang bersangkutan. Namun, dengan distribusi logika bisnis di beberapa
Diterbitkan: 19 September 2023
layanan mikro, kompleksitas keseluruhan layanan mikro manajemen meningkat [4]. Hal
ini termasuk integrasi mekanisme kontrol akses.
Open Web Application Security Project (OWASP) sering mempublikasikan daftar
Hak Cipta: © 2023 oleh penulis. risiko keamanan pada aplikasi web. Dalam daftar tahun 2021, kontrol akses yang rusak
Pemegang lisensi MDPI, Basel, terdaftar sebagai risiko keamanan nomor satu [11]. Dalam arsitektur layanan mikro,
Swiss. Artikel ini adalah artikel akses kompleksitas kontrol akses semakin meningkat dengan adanya distribusi layanan dan
terbuka yang didistribusikan di bawah tanggung jawabnya. Seperti yang dilaporkan oleh de Almeida dan Canedo [12],
syarat dan ketentuan lisensi Creative komunikasi, kepercayaan, dan kontrol akses antara layanan mikro merupakan tantangan
Commons Atribusi (CC BY) (https:// utama. Otentikasi dan otorisasi adalah aspek dari kontrol akses [13]. Otentikasi melibatkan
creativecommons.org/licenses/by/ proses verifikasi identitas subjek, sementara otorisasi menentukan tingkat akses yang
4.0/). diberikan kepada subjek yang diautentikasi.
Otorisasi untuk aplikasi berbasis layanan mikro telah diteliti terutama sebagai aspek
teknis untuk mengevaluasi dan menegakkan keputusan otorisasi dalam layanan mikro
arsitektur [14,15]. Kopling longgar dari layanan mikro menawarkan pemisahan masalah
antara logika bisnis dan logika otorisasi. Hal ini memungkinkan modifikasi logika
otorisasi tanpa mengubah logika bisnis. Dalam makalah ini, kami menerapkan ABAC
untuk melakukan keputusan otorisasi karena melengkapi kopling longgar layanan mikro
dengan menambahkan komponen otorisasi ke arsitektur keseluruhan [16].
Selain tantangan arsitektural, pertanyaan mengenai apa yang harus diotorisasi dan bagaimana
au- torisasi dapat dirumuskan secara sistematis dan secara konsekuen ditegakkan belum
sepenuhnya ditangani. Hal ini menyiratkan perubahan pada proses pengembangan
perangkat lunak untuk aplikasi berbasis layanan mikro. Otorisasi, sebagai bagian dari
keamanan komputer, adalah persyaratan non-fungsional [13] yang sering dilakukan
sebagai renungan dalam rekayasa perangkat lunak [17]. Untuk mengatasi hal ini,
otorisasi harus dikumpulkan selama analisis kebutuhan dan selanjutnya direalisasikan
selama desain dan implementasi. Namun, tidak ada prosedur yang ditetapkan secara luas
untuk mendefinisikan kebijakan otorisasi. Meskipun ada pendekatan berbasis model untuk
mendapatkan kebijakan ABAC berdasarkan model Unified Modeling Language (UML)
[18,19], namun masih sedikit penelitian mengenai pendekatan untuk mendapatkan
kebijakan ABAC sebagai bagian integral dari proses rekayasa perangkat lunak. Hal ini
juga berlaku untuk definisi dan pembuatan persyaratan otorisasi, yang diperlukan untuk
mendefinisikan apa yang perlu diotorisasi dan tidak memiliki struktur yang sistematis
[20].
Kami mengidentifikasi integrasi otorisasi berbutir halus menggunakan ABAC dalam
pengembangan aplikasi berbasis layanan mikro sebagai kesenjangan penelitian utama.
Untuk mengatasi kesenjangan ini, kami membuat empat pertanyaan penelitian yang
diselidiki dalam makalah ini:
Pertanyaan penelitian utama adalah perumusan kebijakan ABAC (RQ1) sebagai artefak
otorisasi utama. Definisi kebijakan ABAC mempengaruhi apa yang harus dikumpulkan selama
analisis kebutuhan (RQ2) dan bagaimana kebijakan dapat diimplementasikan (RQ3). Integrasi
holistik ke dalam pengembangan (RQ4) tergantung pada artefak otorisasi. Untuk
menjawab pertanyaan-pertanyaan penelitian tersebut, kontribusi dari makalah ini adalah
sebagai berikut
ing: Pertama, kami mengusulkan sebuah bahasa kebijakan otorisasi untuk menyediakan
struktur untuk perumusan kebijakan otorisasi bahasa alami. Hal ini dilakukan dengan
Augmented Backus-Naur Form (ABNF) yang menata aspek-aspek yang diperlukan dari ABAC.
Kedua, sebuah subset dari bahasa kebijakan otorisasi disediakan untuk menetapkan
formalisasi untuk definisi persyaratan otorisasi selama fase analisis. Ketiga, kami
menyediakan struktur untuk mengimplementasikan kebijakan otorisasi menggunakan
bahasa kebijakan Rego. Keempat, kami menyediakan ekstensi otorisasi untuk proses
pengembangan aplikasi berbasis layanan mikro yang mencakup fase analisis, desain, dan
implementasi serta pengujian.
Dalam pekerjaan ini, kami fokus pada aplikasi berbasis layanan mikro yang menggunakan
API RESTful, karena mereka memiliki serangkaian operasi yang tetap mengikuti penggunaan
operasi Create, Read, Update, dan Delete (CRUD) [5]. Lebih lanjut, otentikasi tidak dibahas
dalam makalah ini. Dengan kata lain, hal ini mengasumsikan bahwa pengguna manusia
sudah terotentikasi (misalnya, melalui Open ID Connect) dan dapat membuktikannya
(misalnya, melalui JSON Web Token (JWT) yang valid [21]).
Sisa dari artikel ini disusun sebagai berikut: Bagian 2 menyajikan pekerjaan terkait
tentang otorisasi dan keadaan terkini dari otorisasi (fine-grained) dalam aplikasi (berbasis
layanan mikro). Pada Bagian 3, bahasa kebijakan otorisasi, implementasi kebijakan
otorisasi, dan perluasan otorisasi untuk proses pengembangan diperkenalkan. Untuk
menunjukkan kontribusi dari pekerjaan ini, Bagian 4 memperkenalkan sebuah studi kasus
Perangkat 402
Lunak 2023, 2
yang menggunakan artefak otorisasi dan ekstensi otorisasi dalam proses pengembangan.
Hasilnya dibahas di Bagian 5. Akhirnya, Bagian 6 merangkum pekerjaan ini.
Perangkat 403
Lunak 2023, 2
2. Pekerjaan Terkait
2.1. Latar Belakang
Kontrol akses adalah aspek fundamental dari keamanan dalam sistem TI [13]. Ini
terdiri dari tiga aspek: otentikasi, otorisasi, dan audit [22]. Dalam kontrol akses, sebuah
subjek (manusia atau non-manusia) selalu berusaha untuk melakukan suatu tindakan
pada sebuah objek. Sebuah subjek harus diautentikasi sebelum permintaan akses dapat
diotorisasi atau tidak. Permintaan akses dicatat untuk tujuan audit. Dalam pekerjaan ini,
hanya istilah subjek dan objek yang digunakan untuk memberikan terminologi umum
dan untuk menghindari kesalahpahaman (misalnya, penggunaan subjek dan bukan
pengguna).
Otorisasi sering kali dibagi menjadi otorisasi berbutir kasar dan berbutir halus [23].
Kontrol akses berbutir kasar memberikan akses ke sistem atau sumber daya kepada
subjek yang lebih luas. Sebaliknya, kontrol akses berbutir halus memungkinkan hak
akses yang fleksibel ke sumber daya tertentu untuk pengguna individu [24,25]. Gambaran
umum yang menyajikan karakteristik otorisasi berbutir halus dan berbutir kasar
disediakan pada Tabel 1. Paradigma otorisasi yang populer adalah Role-Based Access
Control (RBAC) dan ABAC. RBAC mengaitkan satu set izin (misalnya, membaca atau menulis
ke folder) dengan peran yang dapat diberikan ke subjek [26]. Dengan demikian, RBAC
biasanya digunakan untuk melakukan otorisasi yang agak kasar. RBAC masih
memungkinkan untuk membuat peran untuk sumber daya atau pengguna individu.
Namun, hal ini dapat menyebabkan fenomena yang disebut ledakan peran, yang
mengimplikasikan jumlah peran yang tidak dapat diatur dalam sistem kontrol akses [27].
Formulir) [32]. ABNF disusun menggunakan aturan dan elemen yang mewakili tata bahasa
suatu bahasa. Setiap aturan terdiri dari sebuah nama, diikuti dengan tanda sama dengan
"=", dan elemen-elemen yang mendefinisikan aturan tersebut. Elemen dapat berupa
simbol terminal (literal) atau referensi ke aturan lain. Notasi ini memungkinkan adanya
elemen opsional, pengulangan, dan pengelompokan, sehingga lebih fleksibel daripada
BNF tradisional. ABNF digunakan dalam spesifikasi protokol internet. Sebagai contoh,
spesifikasi protokol HTTP [33] atau OAuth 2.0 [34] menggunakan ABNF.
Daftar 1 menyajikan kutipan dari spesifikasi HTTP 1.1. Aturan Request-Line (baris
1) mengacu pada lima aturan lain yang diikuti oleh Carriage Return Line Feed (CRLF).
Baris 3 menyajikan aturan yang mendefinisikan bagaimana versi HTTP ditentukan,
misalnya, HTTP 1.1. Terakhir, aturan Method pada baris 4 mendefinisikan metode
HTTP yang tersedia, misalnya GET.
Karena kebijakan otorisasi merupakan artefak perantara antara NLP dan DP, pertama-tama
kami memperkenalkan ABNF untuk kebijakan otorisasi di Bagian 3.1. Berdasarkan
kebijakan otorisasi, kami memperkenalkan ABNF untuk persyaratan otorisasi sebagai
kebijakan otorisasi yang disederhanakan di Bagian 3.2. Implementasi di Rego berdasarkan
diperkenalkan di Bagian 3.3. Terakhir, integrasi ke dalam proses pengembangan
diperkenalkan di Bagian 3.4.
Melengkapi pengenalan artefak otorisasi yang diusulkan, kami memperkenalkan
dua contoh yang sedang berjalan:
1. Alice bekerja di bagian keuangan di sebuah perusahaan cabang Berlin. Dia hanya
diizinkan untuk mengambil daftar proyek yang menjadi tanggung jawabnya.
Mengikuti pedoman perusahaan, Alice hanya diizinkan mengakses catatan dari
Jerman.
2. Bob ingin melihat gambaran umum sebuah buku horor di perpustakaan buku
digital. Untuk melakukan permintaan tersebut, Bob harus memiliki utang kurang
dari EUR 10 di perpustakaan dan memenuhi batasan usia buku yang diminta.
Contoh-contoh ini dibuat untuk mencakup akses ke satu objek dan juga akses ke
sekumpulan objek. Keduanya umumnya terjadi pada aplikasi berbasis layanan mikro
ketika menggunakan RESTful API.
tanpa sepengetahuan sebelumnya. Baris 1 mewakili aturan ABNF awal dari kebijakan
otorisasi. Tujuannya adalah untuk mendefinisikan apa yang dapat dilakukan oleh subjek
terhadap suatu objek yang diberikan seperangkat kondisi.
1 #KebijakanOtorisasi1
2 Sebuah subjek dengan subject.department == Finance AND subject.branch == Berlin
dapat melakukan aksi GET pada setiap objek di /projects dimana subject.id =
object.assignee AND environment.location == Germany
3 #Kebijakan Otorisasi2
4 Sebuah subjek dengan subject.debt < 10 dapat melakukan tindakan GET pada /book/{id}
IF object.rating <= subject.age
1 KebijakanOtorisasi = "Sebuah subjek " subAtribut " dapat melakukan tindakan " aksi
" pada " kondisi objekKeputusan
2 action = "GET" / "POST" / "PUT" / "PATCH" / "DELETE"
3 objek = * VChar
4 operator = "<" / "<=" / "==" / ">" / ">=" / "is" / "not" / "contains" / ..
5 atribut = *VCHAR
6 nilai = *VCHAR
7
8 subAtribut = "" / "dengan" subKondisi
9 subCond = "subjek." nilai operator atribut
10 subKondisi =/ subKondisi " AND " subKondisi / subKondisi " OR " subKondisi / " ( "
subKondisi " OR " subKondisi " ) " / " ( " subCond " AND " subCond " ) "
11
12 objectDecision = object / object "JIKA" / "setiap object dalam "object" yang ~"
13
14 kondisi = "" / kondisi " DAN " kondisi / kondisi " ATAU " kondisi / " ( " kondisi " ATAU
" kondisi " ) " / " ( " kondisi " DAN " kondisi " ) "
15 kondisi =/- "subjek. "operator atribut "objek. "atribut / "objek. "nilai operator atribut
16 kondisi =/- "lingkungan." nilai operator atribut
Aturan pertama disebut subAtribut dan digunakan untuk mengidentifikasi atribut subjek.
Sebuah sub-objek dapat tidak memiliki atribut atau satu atribut atau lebih. Pembedaan ini
dibuat di baris 8. Jika satu atribut subjek digunakan, aturan lain yang disebut subKondisi
digunakan. Seperti yang ditunjukkan pada baris 9, sebuah struktur untuk kondisi atribut
subjek disediakan. Atribut subjek dengan notasi "subjek." atribut. Atribut aturan ditunjukkan
pada baris 5. Dalam ABNF, *VCHAR memungkinkan kita untuk menulis kumpulan karakter
yang dapat dicetak (VCHAR) yang panjangnya sewenang-wenang (*). Subjek pada
atribut harus dibandingkan dengan sebuah nilai. Dengan demikian, operator aturan dan nilai
dibuat. Operator aturan disajikan pada baris 4. Operator ini berisi sekumpulan operator
perbandingan seperti <, >, atau ==. Terakhir, nilai aturan mirip dengan atribut aturan,
yang menampilkan jumlah karakter yang dapat dicetak secara sewenang-wenang. Dengan
menggunakan aturan-aturan ini, atribut subjek dapat dibandingkan dengan sebuah nilai.
Namun, jika beberapa atribut subjek diperlukan, subkondisi aturan yang digambarkan pada baris 9
tidak cukup. ABNF memungkinkan sebuah aturan untuk diperluas dengan menyediakan
alternatif kenaikan, yang disajikan dengan notasi "=/". Baris 10 menyajikan alternatif
untuk kondisi subjek yang menyediakan operator logika seperti AND dan OR.
Menerapkan operator logika memungkinkan pembuatan rantai pernyataan yang kompleks untuk
mendeskripsikan atribut subjek. Sebagai contoh, pernyataan (subject.age > 10 AND subject.age <
18) ATAU subject.age > 30 - membatasi akses dalam sebuah kebijakan pada rentang usia
tertentu.
Mengikuti atribut subjek, kebijakan otorisasi memiliki aksi aturan. Karena bahasa
kebijakan otorisasi dibuat untuk RESTful API, aksi aturan yang disajikan di baris 2
menyediakan operasi HTTP (misalnya, GET, POST). Menggunakan operasi HTTP
dalam kebijakan otorisasi memungkinkan penyederhanaan implementasi dalam bahasa
Perangkat 411
Lunak 2023, 2
kebijakan.
Perangkat 412
Lunak 2023, 2
1 OtorisasiPersyaratan = "Subjek dapat melakukan tindakan " tindakan " pada objek " objek "
JIKA " kondisi
2 action = *VCHAR
3 objek = * VChar
4 kondisi = * VChar
5 kondisi =/ kondisi " DAN " kondisi / kondisi " ATAU " kondisi / " ( " kondisi " ATAU "
kondisi " ) "
Perangkat 413
Lunak 2023, 2
Daftar 5 berisi dua persyaratan otorisasi untuk contoh yang sedang berjalan.
Persyaratan otorisasi pertama disajikan di baris 2. Subjek hanya dapat melihat proyek
mereka jika mereka ditugaskan untuk proyek tersebut, bekerja di departemen
keuangan, dan melakukan permintaan dari Jerman. Dibandingkan dengan kebijakan
otorisasi yang disajikan pada Daftar 2, persyaratan otorisasi kurang formal dan
terutama menyusun konten artefak analisis. Persyaratan otorisasi kedua disajikan pada
baris 5. Seperti yang dapat dilihat dari persyaratan otorisasi, di seluruh tahap analisis,
nama-nama atribut yang tepat, misalnya, sebagai artefak desain yang diperlukan, belum
tersedia. Namun, persyaratan otorisasi memungkinkan pengumpulan persyaratan
selama fase analisis, yang kemudian dapat ditransfer ke kebijakan otorisasi.
1 #Persyaratan Otorisasi1
2 Sebuah subjek dapat melakukan tindakan mengambil pada daftar objek proyek IF subjek
berada di departemen keuangan AND subjek ditugaskan ke proyek AND tindakan
dilakukan dari ~ Jerman
3
4 #Persyaratan Otorisasi2
5 Subjek dapat melakukan tindakan membaca pada buku objek JIKA utang subjek memiliki
utang kurang dari EUR 10 DAN subjek memenuhi batasan usia
1 mengizinkan {
2 Ketentuan Subjek # Ketentuan Subjek
3 subject.attribute1 == X
4 Y di subject.attribute2
5 # Action
6 action == input.attributes.request.http
7 # Object
8 objek := input.attributes.request.path
9 # Ketentuan
10 # kondisi1
11 data[object.id].owner == subject.id
12 # alternatif
13 response := http.send({
14 "method" : "GET",
15 "url": <PIP>
16 })
17 response.owner == subject.id
18 }
Perangkat 414
Lunak 2023, 2
1 actionIsGet {
2 "GET" = http_request.method
3 }
4
5 subjectIsInFinanceDepartment {
6 claims.department == "Keuangan"
7 }
8
9 subjectIsAssignedToProject {
10 input.parsed_path = ["projects", projectid]
11 data[projectid].assignee == claims.sub
12 }
13
14 klaim := muatan {
15 [_, payload, _] := io.jwt.decode(bearer_token)
16 }
17
18 bearer_token := t {
19 vs := http_request.headers.authorization
20 startwith(v, "Pembawa ")
21 t := substring(v, count("Pembawa "), -1)
22 }
Perangkat 415
Lunak 2023, 2
1 #KebijakanOtorisasi1
2 mengizinkan {
3 subjekDiDepartemenKeuangan
4 subjekCabangIsBerlin
5 actionIsGET
6 objectIsProjects
7 subjekDitugaskanUntukProyek
8 lokasiIsGermany
9 }
10 #Kebijakan Otorisasi2
11 mengizinkan {
12 subjekHutangKurangDari10
13 actionIsGET
14 objectIsBooks
15 PeringkatObjekLebihKecilUmurSubjekSama
16 }
Implementasi
Analisis Desain
Layanan Mikro #1
dan
Layanan Mikro #1
Layanan Mikro #1 Pengujian
API Diagram Pengujian
Pengembanga Artefak
Layanan Mikro #1
Kode Sumber
Kelas
n Aplikasi Artefak Desain Kode Sumber
Analisis Spesifikasi
Layanan Tes
Mikro
Kebijakan Implementasi
Persyaratan Kebijakan
Otorisasi Implementas
Kebijakan
Perpanjangan Otorisasi Otorisasi i Kebijakan
Otorisasi
Tabel Dukungan
masukan
Gambar 2. Analisis dan desain aplikasi berbasis layanan mikro dengan artefak untuk perpanjangan
otorisasi.
struktur dasar untuk merumuskan persyaratan otorisasi dalam bahasa alami. Untuk
menulis kebijakan otorisasi seperti itu, artefak analisis dapat digunakan sebagai masukan, karena
artefak analisis harus mendefinisikan apa yang dapat dilakukan aplikasi dalam keadaan
apa [42]. Berdasarkan persyaratan otorisasi, kebijakan otorisasi dibuat untuk setiap wakil
mikro. Selain itu, kami mengusulkan penggunaan tabel dukungan yang berisi informasi
tentang atribut antara beberapa layanan mikro. Terakhir, kebijakan-kebijakan tersebut
diimplementasikan dalam tahap implementasi dan pengujian.
Untuk membuat artefak otorisasi yang disajikan pada Gambar 2, satu atau beberapa
langkah harus dilakukan di setiap fase pengembangan. Gambar 3 memberikan gambaran
umum tentang tugas-tugas yang harus dilakukan. Pada fase analisis, persyaratan otorisasi
harus dieksplorasi untuk memahami apa saja yang perlu diotorisasi. Hal ini dilakukan
dengan menerapkan proses pada artefak analisis yang ada untuk mengekstrak informasi
yang dibutuhkan. Pada fase desain, atribut yang diperlukan untuk menerapkan
persyaratan otorisasi dengan kebijakan ABAC diekstraksi dari artefak desain.
Selanjutnya, persyaratan otorisasi diubah menjadi kebijakan otorisasi. Terakhir, pada
tahap implementasi, kebijakan tersebut diimplementasikan di Rego. Kami mengusulkan
untuk mempertahankan struktur dalam integrasi otorisasi ke dalam pengembangan
dengan membuat satu kebijakan otorisasi untuk satu persyaratan otorisasi dan membuat
satu implementasi kebijakan untuk satu kebijakan otorisasi.
Artefak
Mengidentifika Analisis
si
Analisis
Subjek/Objek/Tindaka
n Identifikasi Kondisi
Persyaratan
Otorisasi
Identifikasi Kepemilikan Ekstraksi Atribut dari
Objek 1
Desain 1 Persyaratan Otorisasi
Merumuskan Persyaratan
Otorisasi Kebijakan Artefak Desain Peta
Otorisasi
1
Implementasi Merumuskan Kebijakan
dan Tes 1 Otorisasi
Implementa
si Kebijakan
3.4.1. Analisis
Sisi kiri dari Gambar 3 menunjukkan proses derivasi untuk membuat kebutuhan
otorisasi. Dasar dari persyaratan otorisasi adalah artefak analisis dari pendekatan
rekayasa perangkat lunak. Kualitas dan kelengkapan persyaratan otorisasi sangat
bergantung pada informasi yang ada dalam artefak analisis. Langkah pertama adalah
mengidentifikasi aspek-aspek yang diperlukan dari ABAC. Seperti yang dijelaskan pada
Bagian 3.2, subjek, objek, dan tindakan perlu diidentifikasi. Kedua, kondisi untuk
permintaan akses harus didefinisikan. Hal ini termasuk kondisi yang terkait dengan
subjek, objek, atau lingkungan, yang harus diidentifikasi dari artefak analisis. Ketiga,
kepemilikan objek harus diidentifikasi; meskipun ini adalah kondisi itu sendiri,
kepemilikan adalah atribut penting untuk mengelola akses ke suatu objek [29]. Dengan
demikian, pengembang harus menentukan apakah pengguna tunggal atau kelompok besar
yang mengakses suatu objek. Bergantung pada hal ini, keputusan desain tentang
penempatan atribut harus dibuat dalam fase desain. Akhirnya, persyaratan otorisasi dapat
dirumuskan dengan menggunakan ABNF untuk persyaratan otorisasi.
Perangkat 417
Lunak 2023, 2
3.4.2. Desain
Setelah persyaratan otorisasi dibuat, aspek otorisasi harus dimasukkan ke dalam
desain aplikasi untuk mempertahankan struktur keseluruhan. Sisi kanan Gambar 3
mengilustrasikan tugas-tugas untuk membuat kebijakan otorisasi. Untuk setiap
persyaratan otorisasi yang dibuat pada tahap analisis, satu kebijakan otorisasi dibuat. Hal
ini memungkinkan kita untuk mempertahankan struktur selama pengembangan.
Selanjutnya, jika persyaratan otorisasi berubah, kebijakan otorisasi dan implementasi
kebijakan dapat diubah. Sebelum kebijakan otorisasi dapat diformulasikan, penghargaan
diekstraksi dari persyaratan otorisasi, seperti yang juga diusulkan dalam [20,38]. Kondisi
dari persyaratan otorisasi berisi nama-nama atribut. Sebagai contoh, kondisi usia subjek
lebih dari 13 tahun mengimplikasikan atribut usia subjek. Kondisi subjek ditugaskan ke
proyek menyiratkan atribut penerima tugas untuk proyek objek. Ekstraksi atribut berdasarkan
persyaratan otorisasi bersifat individual dan tergantung pada formulasi persyaratan
otorisasi ini. Langkah kedua adalah memetakan persyaratan otorisasi ke artefak desain
layanan mikro. Langkah ini diperlukan karena nama-nama yang digunakan mungkin
berbeda antara fase analisis dan fase desain, misalnya, karena pemangku kepentingan
yang berbeda yang bertanggung jawab untuk setiap fase. Sebagai contoh, diagram kelas
atau spesifikasi API dapat berisi atribut projectAssignee, sementara atribut tersebut hanya
diberi nama assignee dalam persyaratan otorisasi. Selain itu, nama-nama objek dapat bervariasi
di antara fase-fase tersebut. Sebagai contoh, sebuah objek disebut buku dalam analisis, disebut
BookEntity dalam diagram kelas, dan dapat diakses melalui titik akhir API /books/{id}.
Terakhir, kebijakan otorisasi dapat diformulasikan dengan menerapkan ABNF untuk
setiap komponen persyaratan otorisasi. Kami mengusulkan penggunaan tabel dukungan
untuk menyimpan data (misalnya, atribut dan contoh) yang diperlukan untuk perumusan
persyaratan otorisasi. Tabel-tabel tersebut memberikan gambaran umum untuk semua
pengembang yang berpartisipasi. Daftar atribut juga diusulkan oleh Brossard dkk. [20],
yang memperkenalkan tabel tunggal yang mencakup nama pendek, ruang nama, kategori,
tipe data, dan rentang nilai. Namun, dibandingkan dengan Brossard dkk., kami
mengusulkan penggunaan satu tabel pendukung untuk setiap jenis atribut (yaitu, subjek,
objek, dan lingkungan). Format untuk tabel dukungan objek dapat ditemukan pada Tabel 2
dan berisi empat baris: Yang pertama adalah objek, yang berisi nama objek seperti yang
ditemukan dalam artefak desain (misalnya, spesifikasi API) dari layanan mikro. Yang kedua
adalah jalur ke titik akhir REST dari layanan mikro yang menyediakan objek. Yang
ketiga adalah nama atribut seperti yang ditentukan dalam artefak desain. Keempat adalah
contoh nilai untuk atribut. Atribut untuk subjek dan lingkungan disimpan dalam tabel
terpisah. Tabel-tabel tersebut berisi nama atribut dan contoh
nilai untuk memberikan informasi kepada pengembang.
...
Gambar 4. Arsitektur perangkat lunak yang patut dicontoh termasuk komponen otorisasi logis.
4.1. Analisis
Untuk analisis kebutuhan, kami menerapkan kasus penggunaan sebagai artefak
analisis utama untuk merumuskan kebutuhan pengguna. Sebagai alternatif, jenis
artefak analisis kebutuhan lainnya dapat digunakan, asalkan mengandung informasi
yang diperlukan untuk otorisasi. Fungsionalitas layanan mikro FleetManagement
ditunjukkan dalam diagram kasus penggunaan yang disajikan pada Gambar 5. Secara
keseluruhan, terdapat dua aktor, FleetAdministrator dan Fleet-Manager, dan empat
kasus penggunaan. FleetAdministrator dapat membuat armada baru untuk
sekumpulan armada yang sudah ada. FleetManager dapat melihat gambaran umum armada
yang berafiliasi dengan mereka. Jika FleetManager memiliki armada yang berafiliasi,
mereka dapat melihat gambaran umum dari mobil-mobil di dalam armada. Sebuah
mobil dapat dihapus dari armada oleh FleetManager. Kasus penggunaan Melihat Armada
ditunjukkan pada Listing 9. Kondisi tambahan adalah bahwa permintaan harus
dilakukan dari lokasi yang sama di mana armada berada (baris 6). Kasus penggunaan
ini tidak menyertakan kondisi pasca yang relevan untuk otorisasi (baris 8). Alur utama
pada baris 10 dihilangkan. Namun, aktor meminta untuk melihat semua armada (langkah 1).
Akibatnya, sistem akan mencari armada milik aktor (langkah 2) dan menampilkan hasilnya
kepada aktor (langkah 3).
Perangkat 419
Lunak 2023, 2
Manajemen Armada
Tambahkan Armada
ke Armada
Meli Arma
Administrator
hat da
Armada
Meli Arm Ikhtisar
hat ada
"memper
1 AuthZReq-10: Sebuah subjek dapat melakukan aksi Menambah objek Fleets JIKA
subjek tersebut adalah FleetAdministrator
2 AuthZReq-20: Sebuah subjek dapat melakukan aksi Lihat pada objek Armada JIKA
subjek adalah FleetManager untuk Armada ini DAN lokasi sama dengan
lokasi Armada
3 AuthZReq-30: Sebuah subjek dapat melakukan aksi Lihat pada objek Armada JIKA subjek adalah
FleetManager untuk Armada ini
4 AuthZReq-40: Subjek dapat melakukan tindakan Hapus pada objek Armada JIKA subjek
adalah FleetManager untuk Armada ini
4.2. Desain
Diagram kelas untuk layanan mikro FleetManagement disajikan pada Gambar 6.
FleetCollection berisi sekumpulan armada. Selanjutnya, ini berisi fungsi-fungsi untuk
kasus penggunaan Tambahkan Armada ke Armada, Lihat Armada, dan Lihat Ikhtisar Armada.
Perangkat 420
Lunak 2023, 2
Armada berisi pengenal dan
Perangkat 421
Lunak 2023, 2
atribut untuk FleetManager, lokasi, dan sekumpulan mobil yang dikelola oleh armada.
Armada juga berisi fungsi untuk menghapus untuk kasus penggunaan Hapus Mobil dari
Armada.
Koleksi Armada
armada: Armada[]
AddFleetToFleets(Armada f)
ViewFleets(String fleetManager)
:Armada[] ViewFleetOverview(String
fleetid): Armada
1
*
Armada
fleetID: String Mobil
fleetManager: String vin: String
fleetLocation: String ..
1 *
mobil: Mobil[]
..
HapusMobil(Mobil c): Boolean
Mengikuti perluasan proses yang diperkenalkan pada Bagian 3.4, atribut pertama
kali diekstrak dari persyaratan otorisasi sebelum kebijakan otorisasi dibuat. Tabel
dukungan digunakan untuk menyimpan atribut subjek dan objek yang diekstrak dan
memberikan gambaran umum yang koheren tentang atribut di antara para pengembang.
Tabel dukungan objek untuk studi kasus disajikan pada Tabel 3. Objek yang diidentifikasi
dari persyaratan otorisasi adalah armada dan armada yang masing-masing disebut
FleetCollection dan Fleet dalam diagram kelas. Objek FleetCollection tidak memiliki
atribut yang diperlukan untuk otorisasi. Objek Fleet memiliki atribut fleetManager yang
menyimpan pengenal subjek. Selanjutnya, atribut lokasi disebut fleetLocation dalam
diagram kelas. Jalur untuk objek FleetCollection dan Fleet berasal dari spesifikasi API
dan ditambahkan sebagai /fleets dan /fleets/{fleetID}, masing-masing.
Tabel 4 menyajikan tabel dukungan subjek, yang berisi atribut yang diperlukan oleh
persyaratan otorisasi. Karena persyaratan otorisasi mewajibkan pemeriksaan untuk
menentukan apakah subjek adalah FleetManager untuk armada (mis., AuthZReq-30),
sangat penting untuk mengidentifikasi subjek secara akurat. Ada beberapa opsi yang tersedia
untuk mengakses atribut subjek, yang bergantung pada teknologi yang digunakan. Selama
perancangan studi kasus, keputusan dibuat untuk menggunakan JWT yang disediakan
oleh Manajemen Identitas dan Akses (IAM). JWT berisi pengenal yang disebut sebagai sub,
yang sesuai dengan alamat email subjek. Hasilnya, sub atribut telah dimasukkan ke dalam
tabel dukungan subjek. Selain itu, untuk tujuan ilustrasi, sebuah contoh alamat email
telah disertakan dalam tabel dukungan. Mengingat bahwa kasus penggunaan
Menambahkan Armada ke Armada hanya dapat dieksekusi oleh FleetAdministrator,
maka perlu untuk menetapkan peran untuk identifikasi subjek. JWT juga dilengkapi
dengan bidang yang disebut peran, yang dapat mencakup penunjukan peran untuk
FleetAdministrator. Konfigurasi sistem IAM yang tepat sangat penting untuk
memastikan penyediaan peran yang sesuai. Dalam konteks studi kasus ini, peran
dilambangkan sebagai cs-fleetAdm, dan entri untuk peran telah dibuat dalam tabel
dukungan subjek. Mengingat sebuah subjek dapat memiliki beberapa peran, peran atribut
mencakup nilai contoh yang direpresentasikan menggunakan notasi larik yang diapit oleh
tanda kurung siku (yaitu, []). Atau,
Perangkat 422
Lunak 2023, 2
Atribut seperti departemen dapat digunakan jika semua karyawan dalam suatu departemen
dianggap sebagai administrator armada.
4.3. Implementasi
Berdasarkan kebijakan otorisasi pada Daftar 11, kebijakan otorisasi
diimplementasikan dalam bahasa kebijakan Rego pada Daftar 12. Tepat satu kebijakan
Rego diimplementasikan untuk setiap kebijakan otorisasi bahasa alami. Kebijakan
otorisasi diwakili oleh pernyataan allow. Dalam sebuah pernyataan mengizinkan,
beberapa pernyataan harus dievaluasi menjadi benar agar kebijakan menjadi benar.
Dalam kebijakan yang disajikan dalam Daftar 12, nilai default untuk allow adalah false
(lihat baris 1). Seperti yang dijelaskan pada Bagian 3.3, fungsi pendukung digunakan
untuk mengimplementasikan kebijakan dengan melepaskan fungsionalitas umum.
Sebagai contoh, pernyataan actionIsPost memeriksa apakah operasi HTTP adalah POST.
Untuk kebijakan otorisasi pertama, hanya peran FleetAdministrator yang harus ada
di JWT subjek yang diwakili oleh pernyataan pembantu subjectIsFleetAdministrator.
Mengenai kebijakan otorisasi kedua, layanan mikro harus mengembalikan hanya armada
yang benar-benar dimiliki oleh subjek. Ada beberapa opsi untuk mengimplementasikan
perilaku seperti itu, tergantung pada tingkat eksternalisasi otorisasi dan manajemen
atribut. Dalam kasus kebijakan yang disajikan pada baris 7 hingga 12, header HTTP yang
berisi pengenal subjek dikembalikan. Ini disebut evaluasi parsial dan memungkinkan
layanan mikro yang sebenarnya untuk melakukan pemfilteran dan mengembalikan objek
armada yang benar (lihat [15]). Pilihan lainnya adalah memberi tahu layanan mikro objek
mana yang akan dikembalikan dengan melakukan penyaringan dengan Rego di dalam
OPA. Hal ini berpotensi menyebabkan latensi yang lebih tinggi dan peningkatan
kompleksitas ketika mengevaluasi permintaan yang lebih kompleks [46]. Dua kebijakan
otorisasi terakhir pada baris 13 dan 17 mengevaluasi operasi HTTP dan manajer armada,
yang disediakan oleh pernyataan pembantu (baris 21 sampai 25).
Perangkat 423
Lunak 2023, 2
"generator
beban" k6
Kubernetes Pod
HTTP "pdp"
Agen Kebijakan
Terbuka
Utusan HTTP2
Kebijakan
"semangat
"
Data
HTTP
Hasil uji beban ditunjukkan pada Gambar 8. Sumbu x menunjukkan waktu yang
telah berlalu dari uji beban dalam detik. Sumbu y menunjukkan waktu respons uji beban
dalam milidetik. Untuk setiap arsitektur otorisasi, uji beban dijalankan sebanyak 25 kali
dan sebuah garis diplot yang menunjukkan waktu respons rata-rata untuk jangka waktu
tersebut. Median dipilih untuk menghilangkan pencilan dengan waktu respons yang
sangat tinggi atau rendah. Rona di sekitar setiap waktu respons median mewakili kuantil
90% (Q90) dari latensi respons. Tabel 6 melengkapi hasil yang ditunjukkan pada Gambar
8 dengan kuantil 95% (Q95) dan Permintaan Per Detik (RPS). Implementasi awal (biru)
tanpa otorisasi memiliki latensi rata-rata 2,2 ms. Otorisasi naif (oranye) memiliki latensi rata-
rata 8,152 ms, yang merupakan peningkatan yang signifikan dari implementasi awal.
Peningkatan latensi ini dapat dijelaskan oleh jumlah data yang lebih besar yang harus disaring
oleh layanan mikro. Selain itu, layanan mikro juga harus memvalidasi JWT untuk
mengesahkan permintaan. Dibandingkan dengan implementasi naif, otorisasi yang
dieksternalisasi (hijau) menambahkan ≈2 ms ke latensi rata-rata. Peningkatan ini
disebabkan oleh komponen tambahan yang diperlukan untuk otorisasi menggunakan
OPA.
14 Tidak ada
otorisasi Naif
12 OPA
10
Latensi (ms)
0 5 10 15 20 25 30
Waktu (s)
Gambar 8. Hasil uji beban yang dilakukan pada layanan mikro FleetManagement.
Tabel 6. Hasil yang menyajikan latensi respons untuk pengujian beban yang dijalankan.
semua data yang dikirim hanya sebesar 7,36 MB. Sebaliknya, baik implementasi naif dan OPA
mengirimkan
26,89 MB dan 26,96 MB. Perbedaan data yang dikirim antara implementasi naif dan
OPA kemungkinan besar muncul karena pemilihan token JWT secara acak yang dapat
memiliki ukuran yang sedikit berbeda. Data yang diterima untuk implementasi baseline
dan naif berjumlah ≈62 MB. Dibandingkan dengan implementasi lainnya, implementasi
OPA mengembalikan data tambahan sebesar 4 MB. Hal ini kemungkinan disebabkan
oleh data tambahan (misalnya, header) yang ditambahkan oleh proxy Envoy. Sepanjang
uji beban untuk implementasi naif dan OPA, setiap permintaan individu mengalami
otorisasi yang sukses.
Total Permintaan
Implementasi Data Terkirim Data yang Diterima
HTTP
Tidak Ada Otorisasi 77501 7.36 MB 62.07 MB
Naif 77509 26.89 MB 62.25 MB
OPA 77508 26.96 MB 66.26 MB
5. Diskusi
Dalam makalah ini, kami menyelidiki otorisasi pengguna dalam pengembangan
aplikasi berbasis layanan mikro. Untuk menjawab bagaimana kebijakan ABAC dapat
dirumuskan secara sistematis (RQ1), kami mengusulkan ABNF untuk menyusun kebijakan
otorisasi. Metodologi menggunakan ABNF memungkinkan seseorang untuk membuat
kebijakan otorisasi dengan menyusun aspek-aspek ABAC untuk mengotorisasi
permintaan pengguna. Hal ini termasuk subjek, objek, tindakan, dan atribut masing-
masing. Ini menyediakan artefak bahasa alami bagi pengembang. Persyaratan otorisasi
adalah artefak teknologi-agnostik menengah. Untuk perumusan persyaratan otorisasi
(RQ2), sintaks untuk persyaratan otorisasi diperkenalkan untuk menangkap aspek
otorisasi selama fase analisis persyaratan. Persyaratan otorisasi diformulasikan
menggunakan ABNF; sementara proses menurunkan persyaratan otorisasi akan sangat
individual dan bergantung pada pemangku kepentingan individu, persyaratan otorisasi
menyediakan struktur di antara para pengembang. Selain itu, dengan menggunakan
persyaratan otorisasi, memungkinkan penurunan lebih lanjut dari kebijakan otorisasi.
Untuk menerapkan kebijakan otorisasi secara sistematis (RQ3), kami mengusulkan
implementasi sistematis dengan menggunakan OPA dan bahasa kebijakan sebagai kode,
Rego. Dengan menggunakan kebijakan otorisasi yang didefinisikan dengan ABNF kami,
konten implementasi otorisasi dapat diturunkan selangkah demi selangkah. Untuk
menjawab integrasi otorisasi yang sistematis ke dalam pengembangan aplikasi berbasis
layanan mikro (RQ4), kami mengusulkan perluasan otorisasi ke pendekatan
pengembangan umum untuk aplikasi berbasis layanan mikro. Perpanjangan ini berkisar
dari analisis hingga fase implementasi dan pengujian dan menempatkan artefak otorisasi
yang diperkenalkan di masing-masing fase. Selain itu, sebuah prosedur untuk
menurunkan artefak otorisasi diperkenalkan.
Dengan melakukan pendekatan yang diperkenalkan dalam sebuah studi kasus, kami
menunjukkan bahwa pendekatan ini layak dengan menggunakan diagram kasus
penggunaan UML dan deskripsi kasus penggunaan. Selain itu, kami menyajikan
perbandingan antara implementasi otorisasi, yang menunjukkan bahwa eksternalisasi
logika otorisasi dari layanan mikro menggunakan OPA dan Envoy adalah pilihan
yang layak. Peningkatan latensi secara keseluruhan dapat diterima dan tidak akan
menghalangi kinerja aplikasi berbasis layanan mikro.
Dibandingkan dengan karya sebelumnya tentang otorisasi dalam aplikasi berbasis
layanan mikro, yang mempertahankan fokus utama teknis dalam melakukan otorisasi,
kami menyediakan pendekatan sistematis untuk membuat artefak otorisasi [14,15].
Pendekatan ini dapat mendukung pengembang dalam mengurangi kompleksitas ABAC
yang dilaporkan [28] sambil mendapatkan pemahaman yang seragam tentang apa yang
harus diotorisasi. Pembuatan kebijakan berdasarkan model UML adalah area penelitian
yang menarik [40]. Namun demikian, untuk membuat model berkualitas tinggi,
Perangkat 427
Lunak 2023, 2
pengembang harus memiliki pemahaman yang kuat tentang apa yang harus diotorisasi,
dimulai dari analisis persyaratan. Memiliki artefak otorisasi persyaratan khusus akan
memberikan dukungan dan mencegah integrasi otorisasi sebagai renungan. Dengan
munculnya teknologi besar yang canggih
Perangkat 428
Lunak 2023, 2
model bahasa seperti ChatGPT, perumusan kebijakan otorisasi, seperti yang diuraikan
dalam pendekatan oleh [39], kemungkinan akan menjadi lebih canggih dan dapat
diandalkan. Namun, mengingat bahwa otorisasi adalah aspek yang sangat sensitif dalam
hal keamanan, faktor manusia (yaitu, pengembang) kemungkinan akan tetap menonjol.
Hal ini, pada gilirannya, menggarisbawahi pentingnya memiliki pemahaman yang baik
tentang apa yang membutuhkan otorisasi.
Validitas Konstruk. Perhatian utama terkait konstruksi studi kasus terletak pada potensi
kurangnya kompleksitas secara keseluruhan. Ada kemungkinan bahwa contoh yang
diberikan mungkin terlalu kecil, sehingga mengabaikan kasus-kasus tertentu yang tidak
dipertimbangkan selama pembuatan persyaratan otorisasi atau kebijakan otorisasi.
Hal ini dapat berdampak pada kelengkapan dan efektivitas kebijakan otorisasi yang
diturunkan. Dalam kasus ini, ABNF dari persyaratan otorisasi atau kebijakan
otorisasi tidak memiliki kelengkapan dan ABNF yang bersangkutan dapat
diperpanjang.
Validitas Internal. Selama pengembangan kebijakan otorisasi, terdapat ketergantungan
yang kuat antara berbagai artefak otorisasi; meskipun saling ketergantungan ini
diperlukan untuk mendapatkan kebijakan otorisasi yang efektif, artefak analisis
yang tidak benar atau tidak terdefinisi dengan baik dapat menghasilkan kebijakan
yang tidak memadai, misalnya, kondisi yang tidak terpenuhi. Oleh karena itu,
pengalaman dan kemahiran pengembang dalam melakukan analisis persyaratan
yang menyeluruh dan tepat menjadi ancaman bagi validitas internal.
Validitas Eksternal. Keberhasilan penerapan kebijakan otorisasi dalam konteks eksternal
bergantung pada kesamaan struktur proses pengembangan. Namun, variasi
dalam proses pengembangan, termasuk pembuatan artefak pengembangan,
mungkin ada. Akibatnya, artefak tertentu yang diperlukan oleh proses tersebut
mungkin tidak ada, dan adopsi metode pengembangan yang gesit seperti Scrum
berpotensi berdampak pada pengembangan kebijakan. Meskipun dimungkinkan
untuk mengadaptasi proses ke pendekatan pengembangan layanan mikro yang
berbeda, penurunan kebijakan otorisasi tidak akan langsung dan akan
memerlukan modifikasi.
Keandalan. Konsistensi hasil ketika menerapkan ekstensi otorisasi pada proses
pengembangan idealnya tidak bergantung pada pengembang individu. Namun,
karena adanya keputusan subjektif di sepanjang proses (misalnya, struktur aplikasi
dan konvensi penamaan untuk artefak pengembangan), pengembang yang berbeda
dapat memberikan hasil yang berbeda-beda. Namun demikian, jumlah keseluruhan
kebijakan harus tetap konstan, karena prinsip pelestarian struktur memastikan
bahwa setiap persyaratan otorisasi pada akhirnya sesuai dengan satu kebijakan
otorisasi yang diimplementasikan. Namun, jumlah persyaratan otorisasi akan
tunduk pada masing-masing pengembang, karena penurunan persyaratan otorisasi
tidak ditentukan dan tergantung pada analisis persyaratan.
5.2. Keterbatasan
Makalah ini mengasumsikan pendekatan pengembangan terstruktur untuk
aplikasi berbasis layanan mikro. Definisi artefak analisis adalah topik yang sangat
individual. Oleh karena itu, penurunan persyaratan otorisasi juga sangat individual,
yang akan mengarah pada hasil yang berbeda di antara para pengembang. Artefak
analisis harus berisi semua informasi yang diperlukan mengenai otorisasi. Lebih
lanjut, perluasan proses pengembangan yang diusulkan tidak dapat memberikan solusi
untuk setiap kasus tepi. Namun, ini menyediakan struktur yang dapat diperluas dengan
artefak atau turunan yang sesuai. Lebih jauh lagi, ABNF dan Rego mengizinkan
seseorang untuk menulis kebijakan dengan kompleksitas yang berubah-ubah. Dalam
Perangkat 429
Lunak 2023, 2
kondisi saat ini, penggunaan REST API membatasi tindakan yang mungkin
dilakukan saat membuat kebijakan otorisasi. Paradigma API lain seperti gRPC atau
GraphQL tidak didukung oleh hasil penelitian ini.
Perangkat 430
Lunak 2023, 2
bekerja. Untuk menggunakan API tersebut, perubahan pada artefak otorisasi harus
diselidiki dan (mungkin) dilakukan.
Keseluruhan kompleksitas dalam memperkenalkan kontrol akses berbasis atribut ke aplikasi
berbasis layanan mikro meningkat dibandingkan dengan menyematkan keputusan otorisasi
ke dalam kode layanan mikro. Dengan demikian, muncul pertanyaan apakah
menggunakan ABAC merupakan pilihan yang sesuai. Untuk proyek-proyek kecil,
kompleksitas ABAC kemungkinan besar akan lebih besar daripada manfaatnya. Ketika
bekerja dalam proyek perusahaan dengan tim yang besar, kompleksitas secara
keseluruhan akan memiliki efek yang kurang signifikan terhadap beban kerja secara
keseluruhan.
Dalam skenario perusahaan di dunia nyata, kompleksitas yang diperkenalkan oleh ABAC
dalam arsitektur mikro dapat menghadirkan beberapa tantangan dalam operasi; sementara
ekskursi hanya menghadirkan sedikit peningkatan dalam latensi tambahan, pengelolaan
arsitektur secara keseluruhan kemungkinan akan meningkat karena adanya komponen
tambahan. Hal ini juga akan berdampak pada faktor-faktor seperti skalabilitas dan
pemeliharaan, yang sangat relevan dalam lingkungan cloud modern.
Otorisasi layanan memerlukan penentuan sumber daya apa yang dapat diakses oleh layanan mikro
dan siapa yang memiliki sumber daya tersebut. Dalam konteks ABAC, permintaan yang
dilakukan ke komponen otorisasi (misalnya, PIP) juga harus diotorisasi.
6. Kesimpulan
Pengembangan aplikasi berbasis layanan mikro dan penggunaan platform cloud
untuk mendistribusikannya telah menjadi praktik yang mapan dalam rekayasa perangkat
lunak modern. Namun, integrasi mekanisme keamanan seperti autentikasi dan otorisasi
tetap menjadi tantangan utama dalam pengembangan aplikasi tersebut.
Dalam makalah ini, kami mengusulkan sintaks untuk persyaratan otorisasi dan
kebijakan otorisasi serta proses top-down yang sistematis untuk integrasi otorisasi ke
dalam pengembangan aplikasi berbasis layanan mikro. Untuk menerapkan otorisasi
pengguna yang komprehensif, keputusan otorisasi yang baik harus dibuat, misalnya,
memberikan akses ke sebuah objek hanya untuk pengguna tertentu. Untuk menegakkan
keputusan tersebut, ABAC digunakan dengan proses yang sistematis. ABAC dan
mekanisme yang dibutuhkan sesuai dengan gaya arsitektur layanan mikro terdistribusi
dengan memisahkan komponen-komponen yang diperlukan. Hal ini memungkinkan
eksternalisasi otorisasi untuk layanan mikro dengan menghapus logika otorisasi dari
implementasi layanan mikro, yang pada gilirannya mengurangi layanan mikro untuk
menyediakan fungsionalitas bisnis intinya. Selain itu, eksternalisasi memungkinkan aspek
otorisasi diubah tanpa harus mengubah logika layanan mikro, sehingga memberikan
fleksibilitas yang lebih besar. Pengembangan otorisasi mencakup semua fase
pengembangan dan memungkinkan kebijakan otorisasi diturunkan dari artefak
pengembangan yang ada. Pada fase analisis, persyaratan otorisasi dibuat. Berdasarkan
persyaratan otorisasi, kebijakan otorisasi dibuat pada fase desain dengan menggunakan
tabel dukungan. Terakhir, pada fase implementasi, kebijakan otorisasi diimplementasikan
di Rego. Dengan melakukan hal ini, kami mengatasi masalah yang secara inheren
kompleks dalam mengintegrasikan otorisasi berbutir halus ke dalam aplikasi berbasis
layanan mikro. Pendekatan kami dapat menjadi titik awal bagi para pengembang
perangkat lunak untuk menangani topik ini secara sistematis untuk menciptakan
perangkat lunak yang andal dan aman.
Kontribusi Penulis: Konseptualisasi, NS dan SA; metodologi, NS; perangkat lunak, NS; validasi,
NS; investigasi, NS; kurasi data, NS; penyusunan draf awal, NS; tinjauan dan penyuntingan, NS;
supervisi, SA; administrasi proyek, SA. Semua penulis telah membaca dan menyetujui versi naskah
yang diterbitkan.
Pendanaan: Penelitian ini tidak menerima dana eksternal.
Pernyataan Dewan Peninjau Institusi: Tidak berlaku.
Pernyataan Persetujuan Berdasarkan Informasi
(Informed Consent): Tidak berlaku.
Pernyataan Ketersediaan Data: Data yang disajikan dalam penelitian ini tersedia secara terbuka di
KITopen di https://doi.org/10.35097/1744.
Ucapan terima kasih: Para penulis mengucapkan terima kasih kepada Rudy Ailabouni dan David
Boschert atas diskusi yang berharga dan kontribusinya terhadap karya ini.
Konflik Kepentingan: Para penulis menyatakan tidak memiliki konflik kepentingan.
Singkatan
Singkatan-singkatan berikut ini digunakan dalam naskah ini:
Referensi
1. Swoyer, M.; Loukides, S. Adopsi Layanan Mikro pada tahun 2020. Tersedia secara online:
https://www.oreilly.com/radar/microservices- adoption-in-2020/ (diakses pada tanggal 20 Juni 2023).
2. Berardi, D.; Giallorenzo, S.; Mauro, J.; Melis, A.; Montesi, F.; Prandini, M. Keamanan Layanan Mikro: Tinjauan Literatur yang
Sistematis.
PeerJ Comput. Sains. 2022, 7, e779. CrossRef] [PubMed] [PubMed]
3. solo.io. Tren Adopsi Layanan Mikro, Kubernetes, dan Istio-2022. Tersedia secara online: https://www.solo.io/resources/
infographic/microservices-kubernetes-and-istio-2022-adoption-trends/pdf/ (diakses pada tanggal 24 Agustus 2023).
4. Newman, S. Membangun Layanan Mikro: Merancang Sistem Berbutir Halus, 1st ed.; O'Reilly Media: Beijing, Cina; Sebastopol,
CA, USA, 2015.
5. Fielding, R.T. Gaya Arsitektur dan Desain Arsitektur Perangkat Lunak berbasis Jaringan. Tesis Ph.D., University of
California, Irvine, CA, USA, 2000.
6. Birrell, A.D.; Nelson, B.J. Menerapkan Panggilan Prosedur Jarak Jauh. ACM Trans. Comput. Syst. 1984, 2, 39-59. [CrossRef]
7. Inisiatif API Terbuka. Spesifikasi API Terbuka-v3.1.0. Tersedia secara online: https://spec.openapis.org/oas/v3.1.0 (diakses
pada 24 Agustus 2023).
8. Google LLC Semua. Dokumentasi Penyangga Protokol. Tersedia secara online: https://protobuf.dev/programming-
guides/proto3/ (diakses pada 24 Agustus 2023).
9. Hippchen, B.; Giessler, P.; Steinegger, R.H.; Schneider, M.; Abeck, S. Merancang Aplikasi Berbasis Layanan Mikro dengan
Menggunakan Pendekatan Desain Berbasis Domain . Int. J. Adv. Softw. 2017, 10, 432-445.
10. Sidler, J.; Braun, E.; Schmitt, C.; Schlachter, T.; Hagenmeyer, V. Arsitektur Berbasis Layanan Mikro untuk Integrasi Backend
Data dan Aplikasi Dasbor dalam Domain Energi dan Lingkungan. Dalam Kemajuan dan Tren Baru dalam Informatika
Lingkungan; Wohlgemuth, V., Naumann, S., Behrens, G., Arndt, HK, Eds.; Penerbitan Internasional Springer: Cham, Swiss, 2022; hlm.
37 - 48. [CrossRef]
11. Yayasan OWASP. OWASP Top 10:2021. Tersedia secara online: https://owasp.org/Top10/ (diakses pada 15 Juli 2023).
12. de Almeida, M.G.; Canedo, E.D. Otentikasi dan Otorisasi dalam Arsitektur Layanan Mikro: Tinjauan Literatur Sistematis .
Appl. Appl. Sci. 2022, 12, 3023. [CrossRef]
13. Gollmann, D. Keamanan Komputer. WIREs Comput. Stat. 2010, 2, 544 - 554. [CrossRef]
14. Nehme, A.; Jesus, V.; Mahbub, K.; Abdallah, A. Kontrol Akses Berbutir Halus untuk Layanan Mikro. Dalam Prosiding
Simposium Internasional ke-11 (FPS 2018), Montreal, QC, Kanada, 13-15 November 2018; Zincir-Heywood, N., Bonfante, G., Debbabi,
M., Garcia-Alfaro, J., Eds.; Penerbitan Internasional Springer: Cham, Swiss, 2019; Volume 11358, hlm. 285-300.
15. Sauwens, M.; Heydari Beni, E.; Jannes, K.; Lagaisse, B.; Joosen, W. ThunQ: Middleware Otorisasi Terdistribusi dan Mendalam
untuk Penegakan Kebijakan Awal dan Malas dalam Aplikasi Layanan Mikro. Dalam Prosiding Konferensi Internasional ke-19
(ICSOC 2021), Acara Virtual, 22-25 November 2021; Hacid, H., Kao, O., Mecella, M., Moha, N., Paik, H.Y., Eds.; Springer
International Penerbitan: Cham, Swiss, 2021; Volume 13121, hlm. 204-220.
16. Yarygina, T.; Bagge, A.H. Mengatasi Tantangan Keamanan dalam Arsitektur Layanan Mikro. Dalam Prosiding IEEE 2018
Simposium Rekayasa Sistem Berorientasi Layanan (SOSE), Bamberg, Jerman, 26 - 29 Maret 2018; hlm. 11 - 20. [CrossRef]
17. Devanbu, P.; Stubblebine, S. Rekayasa Perangkat Lunak untuk Keamanan: Sebuah Peta Jalan. Dalam Prosiding Konferensi
Masa Depan Rekayasa Perangkat Lunak, Limerick, Irlandia, 4-11 Juni 2000; hal. 227-239.
Perangkat 434
Lunak 2023, 2
18. Busch, M.; Koch, N.; Masi, M.; Pugliese, R.; Tiezzi, F. Menuju Pengembangan Kebijakan Kontrol Akses Berbasis Model
untuk Aplikasi Web. Dalam Prosiding Lokakarya Keamanan Berbasis Model, Innsbruck, Austria, 1-5 Oktober 2012; hlm. 1 -
6. [CrossRef]
19. Zolotas, C.; Chatzidimitriou, K.C.; Symeonidis, A.L. RESTsec: Platform Kode Rendah untuk Menghasilkan Layanan Secure by
Design Enterprise . Enterp. Inf. Syst. 2018, 12, 1007-1033. [CrossRef]
20. Brossard, D.; Gebel, G.; Berg, M. Pendekatan Sistematis untuk Menerapkan ABAC. Dalam Prosiding Lokakarya ACM 2nd di
Kontrol Akses Berbasis Atribut-ABAC '17, Scottsdale, AZ, AS, 24 Maret 2017; hlm. 53 - 59. [CrossRef]
21. RFC 7519; JSON Web Token (JWT). Gugus Tugas Rekayasa Internet, Fremont, CA, AS, 2015. Tersedia secara online: https:
//www.rfc-editor.org/rfc/rfc7519 (diakses pada 15 Juni 2023). [CrossRef]
22. Sandhu, R.; Samarati, P. Kontrol Akses: Prinsip dan Praktik. IEEE Commun. Mag. 1994, 32, 40-48. [CrossRef]
23. Kizza, J.M. Kontrol Akses dan Otorisasi. Dalam Panduan Keamanan Jaringan Komputer; Springer: London, Inggris, 2015; hlm.
185 - 204. [CrossRef]
24. Goyal, V.; Pandey, O.; Sahai, A.; Waters, B. Enkripsi Berbasis Atribut untuk Kontrol Akses Berfokus pada Data Terenkripsi.
Dalam Prosiding Konferensi ACM ke-13 tentang Keamanan Komputer dan Komunikasi, Alexandria, VA, AS, 30 Oktober
2006;
Hal. 89-98. [CrossRef]
25. Ghotbi, S.H.; Fischer, B. Kontrol Akses Berbasis Peran dan Atribut untuk Aplikasi Web. Dalam Perangkat Lunak dan
Teknologi Data; Cordeiro, J.; Hammoudi, S.; van Sinderen, M., Eds.; Springer: Berlin/Heidelberg, Jerman, 2013; Volume 411,
Hal. 171-187. [CrossRef]
26. Sandhu, R.; Coyne, E.; Feinstein, H.; Youman, C. Model Kontrol Akses Berbasis Peran. Komputer 1996, 29, 38 - 47. [CrossRef]
27. Elliott, A.; Knight, S. Ledakan Peran: Mengakui Masalah. Dalam Prosiding Konferensi Internasional 2010 di Software
Engineering Research & Practice (SERP 2010), Las Vegas, NE, USA, 12-15 Juli 2010; hal. 349-355.
28. Aftab, M.U.; Qin, Z.; Zakria; Ali, S.; Pirah; Khan, J. Evaluasi dan Analisis Perbandingan Model Kontrol Akses Berbasis Peran dan
Kontrol Akses Berbasis Atribut. Dalam Prosiding Konferensi Komputer Internasional 15th 2018 tentang Wavelet Aktif Teknologi
Media dan Pemrosesan Informasi (ICCWAMTIP), Chengdu, Cina, 14-16 Desember 2018; hlm. 35 - 39. [CrossRef]
29. Hu, V.C.; Ferraiolo, D.; Kuhn, R.; Schnitzer, A.; Sandlin, K.; Miller, R.; Scarfone, K. Panduan untuk Definisi dan Pertimbangan
Kontrol Akses Berbasis Atribut (ABAC); Laporan Teknis NIST SP 800-162; National Institute of Standards and Technology:
Gaithersburg, MD, AS, 2014. [CrossRef]
30. Yuan, E.; Tong, J. Attributed Based Access Control (ABAC) untuk Layanan Web. Dalam Prosiding Konferensi Internasional IEEE
tentang Layanan Web (ICWS'05), Orlando, FL, AS, 11 - 15 Juli 2005; hal. 569. [CrossRef]
31. eXtensible Access Control Markup Language (XACML) Versi 3.0. Standar OASIS. 22 Januari 2013. Tersedia secara online:
http://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html (diakses pada tanggal 20 Juni 2023).
32. RFC 5234; BNF yang Ditambah untuk Spesifikasi Sintaks: ABNF. Satuan Tugas Rekayasa Internet, Fremont, CA, AS, 2008.
Tersedia online: https://www.rfc-editor.org/rfc/rfc5234.html (diakses pada 22 Maret 2023). [CrossRef].
33. RFC 2616; Hypertext Transfer Protocol-HTTP/1.1. Internet Engineering Task Force, Fremont, CA, USA, 1999. Tersedia online:
https://www.rfc-editor.org/rfc/rfc2616?data1=dwnsb4B&data2=abmurltv2b (diakses pada 20 Juli 2023). [CrossRef]
34. RFC 6749; Kerangka Kerja Otorisasi OAuth 2.0. Gugus Tugas Rekayasa Internet, Fremont, CA, Amerika Serikat, 2012. Tersedia
online: https://www.rfc-editor.org/rfc/rfc6749 (diakses pada 15 Juni 2023). [CrossRef].
35. Chandramouli, R. Strategi Keamanan untuk Sistem Aplikasi Berbasis Layanan Mikro; Laporan Teknis NIST SP 800-204; Institut
Standar dan Teknologi Nasional , Gaithersburg, MD, AS, 2019. [CrossRef]
36. Banati, A.; Kail, E.; Karoczkai, K.; Kozlovszky, M. Otentikasi dan Orkestrator Otorisasi untuk Arsitektur Perangkat Lunak Berbasis
Layanan Mikro. Dalam Prosiding Konvensi Internasional ke-41 2018 tentang Teknologi Informasi dan Komunikasi, Elektronik dan
Mikroelektronika (MIPRO), Opatija, Kroasia, 21 - 25 Mei 2018; hlm. 1180 - 1184. [CrossRef]
37. Das, S.; Mitra, B.; Atluri, V.; Vaidya, J.; Sural, S. Rekayasa Kebijakan dalam RBAC dan ABAC. Dalam Dari Basis Data ke
Keamanan Siber; Samarati, P., Ray, I., Ray, I., Eds.; Penerbitan Internasional Springer: Cham, Swiss, 2018; Volume 11170, hlm. 24
- 54. [CrossRef]
38. Alohaly, M.; Takabi, H.; Blanco, E. Ekstraksi Atribut Otomatis dari Kebijakan Kontrol Akses Berbasis Atribut Bahasa Alami
(ABAC). Keamanan siber 2019, 2, 2. [CrossRef]
39. Narouei, M.; Khanpour, H.; Takabi, H.; Parde, N.; Nielsen, R. Menuju Kerangka Kerja Rekayasa Kebijakan Top-down untuk
Kontrol Akses berbasis Atribut. Dalam Prosiding ACM 22nd tentang Simposium tentang Model dan Teknologi Kontrol Akses,
Indianapolis, IN, AS, 21 - 23 Juni 2017; hlm. 103 - 114. [CrossRef]
40. Fatemian, A.; Zamani, B.; Masoumi, M.; Kamranpour, M.; Ladani, B.T.; Rahimi, S.K. Pembuatan Kode XACML Otomatis
Menggunakan Pendekatan Berbasis Model. Dalam Prosiding Konferensi Internasional ke-11 2021 tentang Teknik Komputer
dan Pengetahuan (ICCKE), Mashhad, Iran, 28 - 29 Oktober 2021; hlm. 206 - 211. [CrossRef]
41. Talukdar, T.; Batra, G.; Vaidya, J.; Atluri, V.; Sural, S. Penambangan Bottom-Up yang Efisien untuk Kebijakan Kontrol Akses Berbasis
Atribut. Dalam Prosiding Konferensi Internasional IEEE 3rd IEEE tentang Kolaborasi dan Komputasi Internet (CIC) 2017, San
Jose, CA, AS, 15 - 17 Oktober 2017; hlm. 339 - 348. [CrossRef]
42. Lethbridge, T.C.; Laganiere, R. Rekayasa Perangkat Lunak Berorientasi Objek; McGraw-Hill: New York, NY, USA, 2005; Volume 11.
43. Cockburn, A. Menulis Kasus Penggunaan yang Efektif; Pearson Education India: Noida, India, 1999.
44. Firesmith, D. Persyaratan Keamanan Teknik. J. Object Technol. 2003, 2, 53. [CrossRef]
Perangkat 435
Lunak 2023, 2
45. Yayasan Komputasi Awan (Cloud Native Computing Foundation). Agen Kebijakan Terbuka (Open Policy Agent (OPA)).
Tersedia secara online: https://www.cncf.io/projects/open-policy- agent-opa/ (diakses pada 16 Maret 2023).
46. Yayasan Komputasi Awan (Cloud Native Computing Foundation). Agen Kebijakan Terbuka: Dokumentasi. Tersedia secara
online: https://www.openpolicyagent. org/docs/latest/ (diakses pada 16 Maret 2023).
47. Proyek Envoy. Dokumentasi Envoy: Apa itu Envoy? Tersedia secara online: https://www.envoyproxy.io/docs/envoy/latest/
intro/what_is_envoy (diakses pada 24 April 2023).
48. Traefik Enterprise Middleware: OPA-Traefik Enterprise. Tersedia secara online: https://doc.traefik.io/traefik-enterprise/
middlewares/opa/ (diakses pada 4 Juli 2023).
49. Schneider, M.; Zieschinski, S.; Klechorov, H.; Brosch, L.; Schorsten, P.; Abeck, S.; Urbaczek, C. Konsep Pengujian untuk
Pengembangan Aplikasi Berbasis Layanan Mikro. Dalam Prosiding Konferensi Internasional Keenam Belas Rekayasa Perangkat
Lunak Advances (IARIA), Barcelona, Spanyol, 3-7 Oktober 2021; hlm. 88-97.
50. Wohlin, C.; Runeson, P.; Höst, M.; Ohlsson, MC; Regnell, B.; Wesslén, A. Eksperimentasi dalam Rekayasa Perangkat Lunak;
Springer: Berlin / Heidelberg, Jerman, 2012. [CrossRef]
51. Throner, S.; Hutter, H.; Sanger, N.; Schneider, M.; Hanselmann, S.; Petrovic, P.; Abeck, S. Lingkungan DevOps Tingkat
Lanjut untuk Aplikasi Berbasis Layanan Mikro. Dalam Prosiding Konferensi Internasional IEEE 2021 tentang Sistem
Berorientasi Layanan Teknik (SOSE), Oxford, Inggris, 23-26 Agustus 2021; hlm. 134 - 143. [CrossRef]
52. Cloud Native Computing Foundation. Dokumentasi Helm. Tersedia secara online: https://helm.sh/docs/ (diakses pada 24
Agustus 2023).
53. Burns, B.; Oppenheimer, D. Pola Desain untuk Sistem Terdistribusi Berbasis Kontainer. Dalam Prosiding Lokakarya
USENIX ke-8 tentang Topik-Topik Populer dalam Komputasi Awan (HotCloud 16), Denver, CO, AS, 20-21 Juni 2016.
54. Proyek Envoy. Dokumentasi Envoy: Filter HTTP-Otorisasi Eksternal. Tersedia secara online: https://www.envoyproxy.io/
docs/envoy/v1.26.3/api-v3/extensions/filters/network/ext_authz/v3/ext_authz.proto, (diakses pada tanggal 29 Maret
2023).
55. Teerakanok, S.; Uehara, T.; Inomata, A. Bermigrasi ke Arsitektur Zero Trust: Ulasan dan Tantangan. Secur. Commun. Netw.
2021, 2021, 9947347. [CrossRef]
Penafian/Catatan Penerbit: Pernyataan, opini, dan data yang terkandung dalam semua publikasi adalah milik masing-masing
penulis dan kontributor dan bukan milik MDPI dan/atau editor. MDPI dan/atau editor tidak bertanggung jawab atas cedera pada
orang atau properti yang diakibatkan oleh ide, metode, instruksi, atau produk apa pun yang dirujuk dalam konten.