{"id":790,"date":"2026-08-05T09:56:58","date_gmt":"2026-08-05T02:56:58","guid":{"rendered":"https:\/\/komunitech.com\/blog\/?p=790"},"modified":"2026-08-05T10:02:20","modified_gmt":"2026-08-05T03:02:20","slug":"google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026","status":"publish","type":"post","link":"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/","title":{"rendered":"Google API Key vs Service Account vs OAuth 2.0: Kapan Harus Pakai yang Mana? (2026)"},"content":{"rendered":"<p><strong>tl;dr:<\/strong> Google punya tiga cara autentikasi yang sering ketuker: <strong>API key<\/strong> buat akses data publik lewat skrip pribadi (paling simpel, tapi cuma nandain project buat billing\u2014bukan identitas), <strong>Service Account<\/strong> buat backend\/server yang akses data milik aplikasi sendiri (robot pegawai, pakai file JSON), dan <strong>OAuth 2.0<\/strong> buat aplikasi yang akses data milik <em>user<\/em> (Gmail\/Drive orang lain, butuh izin\/consent). Salah pilih = celah keamanan atau tagihan bengkak. Artikel ini bantu kamu tentuin kapan pakai yang mana, lengkap tabel banding + pohon keputusan.<\/p>\n<p>Kamu lagi bikin aplikasi atau AI agent yang nyambung ke layanan Google, terus mentok di Google Cloud Console: ada &#8220;API Key&#8221;, &#8220;OAuth Client ID&#8221;, &#8220;Service Account&#8221;\u2014harus pilih yang mana? Salah pilih bukan cuma bikin error, tapi bisa buka celah keamanan atau bikin tagihan meledak. Kabar baiknya: aturan mainnya sebenarnya sederhana kalau kamu paham <em>apa yang lagi diautentikasi<\/em>. Kalau kamu udah pernah <a href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-api-key-google-ai-studio-connect-ke-ai-agent-2026\/\">bikin API key di Google AI Studio<\/a>, kamu udah kenalan sama salah satunya\u2014sekarang kita bandingin ketiganya biar kamu gak salah pakai lagi.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_88 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<label for=\"ez-toc-cssicon-toggle-item-6ab3dd8ecb34f\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"ez-toc-cssicon\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6ab3dd8ecb34f\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Kenapa_Google_punya_3_cara_autentikasi\" >Kenapa Google punya 3 cara autentikasi?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Google_API_Key_identifikasi_project_bukan_identitas\" >Google API Key: identifikasi project, bukan identitas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Service_Account_robot_backend_yang_akses_data_milik_aplikasi\" >Service Account: robot backend yang akses data milik aplikasi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#OAuth_20_izin_atas_nama_user\" >OAuth 2.0: izin atas nama user<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Tabel_banding_API_Key_vs_Service_Account_vs_OAuth_20\" >Tabel banding: API Key vs Service Account vs OAuth 2.0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Pohon_keputusan_kapan_pakai_yang_mana\" >Pohon keputusan: kapan pakai yang mana?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Kesalahan_umum_yang_bikin_celah_keamanan\" >Kesalahan umum yang bikin celah keamanan<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Pertanyaan_yang_Sering_Ditanya\" >Pertanyaan yang Sering Ditanya<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Apa_perbedaan_utama_API_key_dan_OAuth_20\" >Apa perbedaan utama API key dan OAuth 2.0?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Apakah_Google_API_key_gratis\" >Apakah Google API key gratis?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Kapan_harus_pakai_Service_Account_bukan_OAuth\" >Kapan harus pakai Service Account, bukan OAuth?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Kenapa_OAuth_dianggap_lebih_aman_daripada_API_key\" >Kenapa OAuth dianggap lebih aman daripada API key?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Apakah_service_account_dan_API_key_bisa_dipakai_bersamaan\" >Apakah service account dan API key bisa dipakai bersamaan?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Bagaimana_cara_mencegah_tagihan_bengkak_karena_kredensial_bocor\" >Bagaimana cara mencegah tagihan bengkak karena kredensial bocor?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Penutup\" >Penutup<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/komunitech.com\/blog\/implementasi\/google-api-key-vs-service-account-vs-oauth-2-0-kapan-harus-pakai-yang-mana-2026\/#Referensi\" >Referensi<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Kenapa_Google_punya_3_cara_autentikasi\"><\/span>Kenapa Google punya 3 cara autentikasi?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Pertanyaan wajar: kenapa gak satu aja biar simpel? Jawabannya karena tiga skenario ini beda banget kebutuhan keamanannya. Analogi gampangnya:<\/p>\n<ul>\n<li><strong>API Key = kartu member toko.<\/strong> Nunjukin kamu member (buat itung kuota\/tagihan), tapi gak bener-bener buktiin kamu siapa. Siapa aja yang pegang kartunya bisa pakai.<\/li>\n<li><strong>Service Account = robot pegawai.<\/strong> Punya identitas sendiri, kerja di backend atas nama aplikasi, akses gudang data milik aplikasi itu sendiri.<\/li>\n<li><strong>OAuth 2.0 = surat kuasa dari user.<\/strong> Kamu minta izin ke user, user setuju, baru kamu boleh akses data <em>milik user itu<\/em> (email dia, Drive dia) selama izin masih berlaku.<\/li>\n<\/ul>\n<p>Kunci membedakannya: <strong>data siapa yang mau kamu akses, dan apakah butuh persetujuan orang lain?<\/strong> Sisanya tinggal ngikut.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Google_API_Key_identifikasi_project_bukan_identitas\"><\/span>Google API Key: identifikasi project, bukan identitas<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>API key itu string panjang (formatnya kira-kira <code>AIzaSy\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022ewQe<\/code>\u2014diawali <code>AIzaSy<\/code>, ditutup beberapa karakter acak) yang gunanya <strong>ngaitin request ke sebuah project buat keperluan billing dan kuota<\/strong>. Perhatikan: API key <em>tidak<\/em> ngidentifikasi siapa yang manggil. Dia gak tau kamu &#8220;principal&#8221; mana\u2014makanya dia gak bisa dipakai buat cek izin akses (IAM) beneran. <em>(Catatan: jangan pernah tampilkan API key asli kamu secara utuh di mana pun\u2014termasuk di screenshot atau dokumentasi\u2014karena siapa pun yang melihatnya bisa langsung memakainya.)<\/em><\/p>\n<p><strong>Cocok buat:<\/strong><\/p>\n<ul>\n<li>Akses data yang emang publik (Maps, Translate, YouTube data publik).<\/li>\n<li>Skrip pribadi atau proyek kecil yang cuma manggil model AI (contohnya <a href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-api-key-google-ai-studio-connect-ke-ai-agent-2026\/\">Gemini via AI Studio<\/a>).<\/li>\n<li>Prototipe cepat yang gak nyimpen data sensitif user.<\/li>\n<\/ul>\n<p><strong>Bahayanya:<\/strong> karena &#8220;siapa yang pegang, dia yang bisa pakai&#8221;, API key yang bocor = orang lain bisa numpang kuota kamu dan bikin tagihan kamu bengkak. Ini kenapa API key <strong>wajib di-restrict<\/strong> (batasi API mana yang boleh dipakai + dari domain\/IP mana). API key gak dikenai biaya buat dibuat, tapi <em>pemakaian<\/em> API di baliknya bisa berbayar.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Service_Account_robot_backend_yang_akses_data_milik_aplikasi\"><\/span>Service Account: robot backend yang akses data milik aplikasi<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Service Account adalah akun khusus yang mewakili <em>aplikasi<\/em>, bukan manusia. Dia punya identitas sendiri (email format <code>nama@project.iam.gserviceaccount.com<\/code>) dan biasanya diautentikasi pakai <strong>file kunci JSON<\/strong> yang berisi private key.<\/p>\n<p><strong>Cocok buat:<\/strong><\/p>\n<ul>\n<li>Komunikasi server-to-server (backend kamu manggil API Google tanpa ada user yang login).<\/li>\n<li>Akses data milik aplikasi itu sendiri (misal spreadsheet yang kamu share ke email service account-nya).<\/li>\n<li>Otomasi backend\/cron job yang jalan 24\/7 tanpa interaksi manusia.<\/li>\n<li>Impersonation user di Google Workspace lewat <em>domain-wide delegation<\/em> (skenario enterprise).<\/li>\n<\/ul>\n<p><strong>Yang harus hati-hati:<\/strong> file JSON service account itu <em>ibarat kunci gudang<\/em>\u2014siapa yang pegang, dia punya semua akses yang dimiliki service account itu. Jangan pernah commit file ini ke GitHub. Banyak insiden kebocoran gara-gara file JSON ke-push ke repo publik. Kalau kamu pakai AI agent yang butuh baca-tulis data internal, alur ini mirip yang dibahas di panduan <a href=\"https:\/\/komunitech.com\/blog\/tutorial\/tutorial-cara-kasih-akses-openclaw-biar-bisa-baca-tulis-google-drive-docs-dan-sheets-2026\/\">akses OpenClaw ke Google Drive<\/a>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"OAuth_20_izin_atas_nama_user\"><\/span>OAuth 2.0: izin atas nama user<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>OAuth 2.0 dipakai ketika aplikasi kamu perlu akses <strong>data milik user lain<\/strong>\u2014email mereka, file Drive mereka, kalender mereka. Bedanya paling fundamental: OAuth <em>butuh persetujuan (consent) dari user<\/em>. Alurnya: user diarahkan ke halaman login Google \u2192 user menyetujui izin yang diminta \u2192 aplikasi kamu dapat <em>access token<\/em> (+ refresh token buat perpanjang).<\/p>\n<p><strong>Cocok buat:<\/strong><\/p>\n<ul>\n<li>Aplikasi yang punya fitur &#8220;Login with Google&#8221;.<\/li>\n<li>Aplikasi yang akses Gmail\/Drive\/Calendar <em>milik user<\/em> (bukan milik aplikasi kamu).<\/li>\n<li>Skenario di mana kamu harus bisa buktiin &#8220;user X yang ngasih izin, bukan aplikasi yang maksa&#8221;.<\/li>\n<\/ul>\n<p>OAuth adalah yang paling aman untuk data user karena user pegang kendali\u2014mereka bisa cabut izin kapan aja. Tapi juga paling ribet setup-nya (butuh consent screen, redirect URI, penanganan token). Buat aplikasi yang jalan di banyak platform (web, Android, iOS), kamu perlu <em>Client ID<\/em> terpisah per platform.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Tabel_banding_API_Key_vs_Service_Account_vs_OAuth_20\"><\/span>Tabel banding: API Key vs Service Account vs OAuth 2.0<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<table>\n<thead>\n<tr>\n<th>Aspek<\/th>\n<th>API Key<\/th>\n<th>Service Account<\/th>\n<th>OAuth 2.0<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Yang diautentikasi<\/strong><\/td>\n<td>Project (buat billing\/kuota)<\/td>\n<td>Aplikasi (identitas robot)<\/td>\n<td>User (atas nama manusia)<\/td>\n<\/tr>\n<tr>\n<td><strong>Butuh consent user?<\/strong><\/td>\n<td>Tidak<\/td>\n<td>Tidak<\/td>\n<td>Ya (wajib)<\/td>\n<\/tr>\n<tr>\n<td><strong>Akses data siapa?<\/strong><\/td>\n<td>Data publik<\/td>\n<td>Data milik aplikasi<\/td>\n<td>Data milik user<\/td>\n<\/tr>\n<tr>\n<td><strong>Bentuk kredensial<\/strong><\/td>\n<td>String key<\/td>\n<td>File JSON (private key)<\/td>\n<td>Client ID + token<\/td>\n<\/tr>\n<tr>\n<td><strong>Tingkat keamanan<\/strong><\/td>\n<td>Paling lemah (siapa pegang bisa pakai)<\/td>\n<td>Menengah (JSON = kunci penuh)<\/td>\n<td>Paling kuat (user kendali)<\/td>\n<\/tr>\n<tr>\n<td><strong>Kerumitan setup<\/strong><\/td>\n<td>Paling gampang<\/td>\n<td>Menengah<\/td>\n<td>Paling ribet<\/td>\n<\/tr>\n<tr>\n<td><strong>Contoh nyata<\/strong><\/td>\n<td>Skrip panggil Gemini\/Maps<\/td>\n<td>Backend baca Google Sheets internal<\/td>\n<td>App &#8220;Login with Google&#8221; akses Gmail user<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><span class=\"ez-toc-section\" id=\"Pohon_keputusan_kapan_pakai_yang_mana\"><\/span>Pohon keputusan: kapan pakai yang mana?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Jawab tiga pertanyaan ini berurutan:<\/p>\n<ol>\n<li><strong>Kamu mau akses data milik USER lain (email\/Drive mereka)?<\/strong><br \/>\u2192 Ya: <strong>OAuth 2.0<\/strong>. Stop di sini, gak ada opsi lain.<\/li>\n<li><strong>Kalau tidak\u2014kamu jalan di server\/backend tanpa user login, akses data milik aplikasi sendiri?<\/strong><br \/>\u2192 Ya: <strong>Service Account<\/strong>.<\/li>\n<li><strong>Kalau tidak\u2014cuma akses data publik atau panggil model AI dari skrip pribadi?<\/strong><br \/>\u2192 Ya: <strong>API Key<\/strong> (jangan lupa di-restrict).<\/li>\n<\/ol>\n<p>Patokan singkat: <em>data user \u2192 OAuth \u00b7 data aplikasi\/backend \u2192 Service Account \u00b7 data publik\/skrip \u2192 API Key.<\/em><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Kesalahan_umum_yang_bikin_celah_keamanan\"><\/span>Kesalahan umum yang bikin celah keamanan<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><strong>Pakai API key buat data user.<\/strong> API key gak tau siapa user-nya, jadi mustahil buat autentikasi identitas seseorang. Ini kerjaan OAuth.<\/li>\n<li><strong>Commit file JSON service account ke GitHub.<\/strong> Kesalahan klasik. Bot scanner nyari file ini di repo publik dalam hitungan menit. Selalu pakai <code>.gitignore<\/code> dan environment variable.<\/li>\n<li><strong>API key tanpa restriction.<\/strong> Key yang gak dibatasi = tiket gratis buat siapa pun yang nemuin. Batasi per API dan per domain\/IP.<\/li>\n<li><strong>Nyimpen kredensial hardcode di kode.<\/strong> Baik API key maupun kunci lain, jangan ditulis langsung di source code. Pakai <code>.env<\/code> atau secret manager.<\/li>\n<li><strong>Pakai OAuth buat backend cron job.<\/strong> OAuth butuh user consent\u2014gak cocok buat proses otomatis tanpa manusia. Itu ranah service account.<\/li>\n<\/ul>\n<p>Kalau kamu lagi mikirin apakah tetap pakai layanan API pihak ketiga atau pindah, pertimbangan keamanan kredensial ini juga masuk hitungan\u2014kami bahas terpisah di <a href=\"https:\/\/komunitech.com\/blog\/implementasi\/kapan-harus-berhenti-pakai-api-ai-pihak-ketiga-panduan-keputusan-2026\/\">panduan kapan berhenti pakai API AI pihak ketiga<\/a>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Pertanyaan_yang_Sering_Ditanya\"><\/span>Pertanyaan yang Sering Ditanya<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Apa_perbedaan_utama_API_key_dan_OAuth_20\"><\/span>Apa perbedaan utama API key dan OAuth 2.0?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>API key cuma ngaitin request ke project buat billing\/kuota dan dipakai untuk data publik\u2014dia gak ngidentifikasi user. OAuth 2.0 mengautentikasi user tertentu dengan persetujuan mereka, dan dipakai untuk akses data milik user (misal Gmail atau Drive mereka). Singkatnya: API key buat data publik\/skrip, OAuth buat data user.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Apakah_Google_API_key_gratis\"><\/span>Apakah Google API key gratis?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Membuat API key gratis dan tidak dikenai biaya. Yang bisa berbayar adalah <em>pemakaian<\/em> API di baliknya\u2014banyak API punya kuota gratis (free tier), tapi kalau lewat batas atau pakai API premium (misal Maps volume tinggi), kamu bakal ditagih sesuai penggunaan.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Kapan_harus_pakai_Service_Account_bukan_OAuth\"><\/span>Kapan harus pakai Service Account, bukan OAuth?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Pakai Service Account kalau aplikasimu jalan di server\/backend tanpa ada user yang login, dan mengakses data milik aplikasi itu sendiri (bukan data user). Contoh: cron job yang baca spreadsheet internal 24\/7. OAuth dipakai kalau kamu butuh akses data milik user dengan persetujuan mereka.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Kenapa_OAuth_dianggap_lebih_aman_daripada_API_key\"><\/span>Kenapa OAuth dianggap lebih aman daripada API key?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Karena OAuth mengautentikasi identitas user dan user memegang kendali\u2014mereka bisa mencabut izin kapan saja, dan aksesnya dibatasi scope tertentu. API key sebaliknya: siapa pun yang memegang key-nya bisa memakainya tanpa verifikasi identitas, sehingga lebih rawan disalahgunakan kalau bocor.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Apakah_service_account_dan_API_key_bisa_dipakai_bersamaan\"><\/span>Apakah service account dan API key bisa dipakai bersamaan?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bisa, dan malah umum di proyek kompleks. Google bahkan mendukung &#8220;authorization key&#8221;\u2014API key yang diikat ke service account\u2014sehingga request diproses seolah memakai identitas service account tersebut. Tapi untuk kasus sederhana, cukup pilih satu sesuai kebutuhan.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Bagaimana_cara_mencegah_tagihan_bengkak_karena_kredensial_bocor\"><\/span>Bagaimana cara mencegah tagihan bengkak karena kredensial bocor?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Terapkan restriction pada API key (batasi API dan domain\/IP), simpan kredensial di environment variable atau secret manager (bukan hardcode\/GitHub), dan pasang billing alert serta quota limit di Google Cloud Console supaya kamu langsung tahu kalau ada lonjakan pemakaian mencurigakan.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Penutup\"><\/span>Penutup<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Tiga metode ini bukan soal mana yang &#8220;paling bagus&#8221;\u2014tapi mana yang <em>pas<\/em> buat skenario kamu. Salah satu penyebab paling sering aplikasi rentan atau tagihan bengkak adalah pakai metode yang salah: API key buat sesuatu yang harusnya OAuth, atau JSON service account yang bocor ke repo publik. Mulai dari pertanyaan &#8220;data siapa yang mau diakses?&#8221;, sisanya ngikut.<\/p>\n<p>Kalau kamu baru mulai dan cuma butuh nyambungin model AI ke agent atau skrip, mulai dari yang paling simpel dulu: <a href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-api-key-google-ai-studio-connect-ke-ai-agent-2026\/\">bikin API key gratis di Google AI Studio<\/a>. Buat yang mau serius bangun AI agent yang aman dari nol\u2014termasuk cara ngatur kredensial yang bener\u2014kamu bisa belajar terstruktur lewat <a href=\"https:\/\/komunitech.com\/blog\/\">workshop KomuniTech<\/a> (2 jam, langsung praktik bikin Karyawan AI sendiri).<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Referensi\"><\/span>Referensi<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/workspace\/guides\/create-credentials\" rel=\"noopener nofollow\" target=\"_blank\">Google Workspace \u2014 Create access credentials<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/docs\/authentication\/api-keys\" rel=\"noopener nofollow\" target=\"_blank\">Google Cloud \u2014 Manage API keys<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/identity\/protocols\/oauth2\" rel=\"noopener nofollow\" target=\"_blank\">Google \u2014 Using OAuth 2.0 to Access Google APIs<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/iam\/docs\/service-account-overview\" rel=\"noopener nofollow\" target=\"_blank\">Google Cloud IAM \u2014 Service accounts overview<\/a><\/li>\n<\/ul>\n<p><em>Disclaimer: Detail antarmuka Google Cloud Console dan kebijakan kuota bisa berubah sewaktu-waktu. Selalu cek dokumentasi resmi Google untuk informasi terkini.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>tl;dr: Google punya tiga cara autentikasi yang sering ketuker: API key buat akses data publik lewat skrip pribadi (paling simpel, tapi cuma nandain project buat billing\u2014bukan identitas), Service Account buat backend\/server yang akses data milik aplikasi sendiri (robot pegawai, pakai file JSON), dan OAuth 2.0 buat aplikasi yang akses data milik user (Gmail\/Drive orang lain, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":792,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[39],"tags":[],"class_list":["post-790","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-implementasi"],"acf":[],"_links":{"self":[{"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/posts\/790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/comments?post=790"}],"version-history":[{"count":2,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/posts\/790\/revisions"}],"predecessor-version":[{"id":793,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/posts\/790\/revisions\/793"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/media\/792"}],"wp:attachment":[{"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/media?parent=790"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/categories?post=790"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/tags?post=790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}