Halaman ini menjelaskan bagaimana Cloud SQL bekerja dengan pengguna dan peran SQL Server. Peran SQL Server memberi Anda kontrol atas akses dan kemampuan pengguna yang yang mengakses instance SQL Server.
Untuk informasi mengenai cara membuat dan mengelola pengguna Cloud SQL, lihat Membuat dan mengelola pengguna.
Peran dan pengguna SQL Server
Peran SQL Server dapat berupa peran tunggal, atau dapat berfungsi sebagai sekelompok peran.
Pengguna adalah peran yang memiliki kemampuan untuk login (peran tersebut memiliki izin
LOGIN
). Semua peran yang dibuat oleh Cloud SQL memiliki izin LOGIN
,
sehingga Cloud SQL menggunakan istilah "peran" dan "pengguna" secara bergantian. Namun, jika
Anda membuat peran dengan alat klien apa pun yang kompatibel dengan SQL Server, peran tersebut tidak selalu menerima izin LOGIN
.
Cloud SQL untuk SQL Server membatasi akses ke peran server tertentu yang
memberikan hak istimewa lanjutan. Contoh peran ini adalah DbRootRole
,
serveradmin
, securityadmin
, setupadmin
, diskadmin
, dan dbcreator
.
Semua pengguna SQL Server harus memiliki kata sandi. Oleh karena itu, Anda tidak dapat login dengan pengguna yang tidak memiliki sandi.
Superuser dan prosedur yang tersimpan dalam sistem
Cloud SQL untuk SQL Server adalah layanan terkelola, oleh karena itu layanan ini membatasi akses ke prosedur dan tabel tersimpan dalam sistem tertentu yang memerlukan hak istimewa lanjutan. Di Cloud SQL, Anda tidak dapat membuat atau memiliki akses ke pengguna dengan izin superuser.
Pengguna SQL Server default
Saat Anda membuat Cloud SQL baru untuk instance SQL Server pengguna sqlserver
default sudah dibuat untuk Anda, meskipun Anda harus menetapkan sandinya.
Pengguna sqlserver
adalah bagian dari peran CustomerDbRootRole
, dan izin (hak istimewanya) mencakup hal-hal berikut:
ALTER ANY CONNECTION
ALTER ANY LOGIN
ALTER ANY SERVER ROLE
ALTER SERVER STATE
ALTER TRACE
CONNECT SQL
CREATE ANY DATABASE
CREATE SERVER ROLE
VIEW ANY DATABASE
VIEW ANY DEFINITION
VIEW SERVER STATE
Anda juga dapat menambahkan cloudsql enable linked servers
ke instance jika ingin menggunakannya dengan server tertaut. Flag ini memberikan
izin berikut ke server Anda:
ALTER ANY LINKED SERVER
Memberikan izin server
Saat memberikan hak istimewa menggunakan perintah
GRANT
apa pun,
Anda harus meneruskannya dengan as CustomerDbRootRole
, misalnya, nilai
grantor_principal
.
Contoh GRANT ALTER ANY LOGIN
berikut ini valid:
GRANT ALTER ANY LOGIN TO [Account] AS CustomerDbRootRole
Contoh GRANT ALTER ANY LOGIN
berikut ini tidak valid .
GRANT ALTER ANY LOGIN TO [Account]
Pengguna SQL Server lainnya
Anda dapat membuat pengguna atau peran SQL Server lainnya. Semua pengguna yang
Anda buat menggunakan Cloud SQL diberi izin database yang sama dengan
login sqlserver
. Namun, jika Anda menggunakan proses yang berbeda untuk membuat pengguna
(tidak membuatnya menggunakan Cloud SQL), pengguna tidak akan memiliki izin yang sama
dengan akun administrator pelanggan atau pengguna sqlserver
. Misalnya, jika Anda menggunakan proses create
login, dan menambahkan login ke peran server CustomerDbRootRole
, pengguna tidak akan
tidak akan memiliki izin yang sama seperti akun administrator pelanggan atau
pengguna sqlserver
. Oleh karena itu, Anda dapat menggunakan Cloud SQL untuk membuat pengguna jika Anda
ingin pengguna tersebut memiliki izin database yang sama dengan login sqlserver
.
Untuk memvalidasi perbedaan izin antara dua akun, Anda dapat menggunakan
fungsi berikut:
sys.fn_my_permissions.
Mengimpor database: izin pemilik
Saat Anda mengimpor database, perlakuan pemilik bervariasi berdasarkan jenis pemiliknya:
- Untuk login yang sudah ada yang bukan
sa
: Cloud SQL akan menyimpan pemilik tersebut dan membuat pengguna bernamasqlserver
yang memetakan ke loginsqlserver
. Cloud SQL memberikan izinCONTROL
danALTER ANY USER
kepada penggunasqlserver
tersebut. - Untuk login yang tidak dikenal atau login yang dibuat oleh sistem: Cloud SQL
mentransfer kepemilikan database ke login
sqlserver
.
Mengubah izin untuk pengguna
Perintah ALTER ROLE tersedia untuk mengubah izin pengguna. Jika membuat pengguna baru dengan klien, Anda dapat mengaitkannya dengan peran yang berbeda atau memberikan izin yang berbeda.
Pemecahan masalah
Terjadi error saat mengakses database
Saat mencoba mengakses database yang Anda buat, sebagai pengguna yang Anda buat, Anda akan mendapatkan error berikut:
The server principal USERNAME is not able to access the database DATABASE_NAME under the current security context.
Masalahnya mungkin adalah
Pengguna bukanlah anggota dari database.
Hal-hal yang sebaiknya dicoba
Hubungkan ke database sebagai pengguna sqlserver
dan tambahkan pengguna baru, lalu
beri pengguna baru peran db_owner
untuk database. Misalnya:
EXEC sp_adduser 'user'; EXEC sp_addrolemember 'db_owner', 'user'
Langkah berikutnya
- Mengkonfigurasi pengguna untuk instance Anda.
- Membuat dan mengelola pengguna..
- Membuat dan mengelola database.