

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# HIBAH
<a name="r_GRANT"></a>

Mendefinisikan izin akses untuk pengguna atau peran.

Izin mencakup opsi akses seperti dapat membaca data dalam tabel dan tampilan, menulis data, membuat tabel, dan menjatuhkan tabel. Gunakan perintah ini untuk memberikan izin khusus untuk tabel, database, skema, fungsi, prosedur, bahasa, atau kolom. Untuk mencabut izin dari objek database, gunakan perintah. [MENCABUT](r_REVOKE.md) 

Izin juga mencakup opsi akses produsen datashare berikut:
+  Memberikan akses datashare ke ruang nama dan akun konsumen. 
+  Memberikan izin untuk mengubah datashare dengan menambahkan atau menghapus objek dari datashare. 
+  Memberikan izin untuk berbagi datashare dengan menambahkan atau menghapus namespace konsumen dari datashare. 

Opsi akses konsumen Datashare adalah sebagai berikut:
+ Memberikan pengguna akses penuh ke database yang dibuat dari datashare atau skema eksternal yang mengarah ke database tersebut.
+ Memberikan pengguna izin tingkat objek pada database yang dibuat dari datashare seperti yang Anda bisa untuk objek database lokal. Untuk memberikan tingkat izin ini, Anda harus menggunakan klausa WITH PERMISSIONS saat membuat database dari datashare. Untuk informasi selengkapnya, lihat [BUAT BASIS DATA](r_CREATE_DATABASE.md).

Untuk informasi selengkapnya tentang izin datashare, lihat. [Izin yang dapat Anda berikan kepada datashares](permissions-datashares.md)

Izin juga mencakup Katalog Izin Federasi Amazon Redshift berikut:
+ Memberikan izin tingkat tabel kepada pengguna dan peran.
+ Memberikan izin tingkat kolom berbutir halus pada tabel, tampilan, dan tampilan terwujud.
+ Memberikan izin terbatas kepada pengguna dan peran.
+ Memberikan izin tingkat database di Katalog Izin Federasi Amazon Redshift.

Untuk informasi selengkapnya tentang mengelola izin di Katalog Izin Federasi Amazon Redshift, lihat. [Mengelola kontrol akses di katalog izin federasi Amazon RedshiftHibah/Cabut](federated-permissions-managing-access.md) [Untuk informasi selengkapnya tentang grant/revoke sintaks yang didukung Katalog Izin Federasi Amazon Redshift, lihat Memberikan/Mencabut.](https://docs.aws.amazon.com/redshift/latest/dg/federated-permissions-managing-access.html#federated-permissions-managing-access-grant-revoke)

Izin juga mencakup hak istimewa CONNECT untuk pengguna AWS IAM Identity Center federasi. Hak istimewa ini memungkinkan administrator untuk mengontrol akses pengguna melalui izin terperinci di setiap grup kerja Amazon Redshift atau cluster tempat Izin Federasi Amazon Redshift diaktifkan. Administrator Amazon Redshift dapat menentukan pengguna atau grup AWS IAM Identity Center federasi mana yang memiliki akses untuk terhubung langsung ke workgroup Amazon Redshift, memberikan kontrol halus atas akses pengguna di setiap workgroup atau cluster. AWS IAM Identity Center 

Anda juga dapat memberikan peran untuk mengelola izin database dan mengontrol apa yang dapat dilakukan pengguna relatif terhadap data Anda. Dengan mendefinisikan peran dan menetapkan peran kepada pengguna, Anda dapat membatasi tindakan yang dapat dilakukan pengguna tersebut, seperti membatasi pengguna hanya pada perintah CREATE TABLE dan INSERT. Untuk informasi selengkapnya tentang perintah CREATE ROLE, lihat[CREATE ROLE](r_CREATE_ROLE.md). Amazon Redshift memiliki beberapa peran yang ditentukan sistem yang juga dapat Anda gunakan untuk memberikan izin khusus kepada pengguna Anda. Untuk informasi selengkapnya, lihat [Peran yang ditentukan sistem Amazon Redshift](r_roles-default.md).

Anda hanya dapat MEMBERIKAN atau MENCABUT izin PENGGUNAAN pada skema eksternal untuk pengguna database dan grup pengguna yang menggunakan sintaks ON SCHEMA. Saat menggunakan ON EXTERNAL SCHEMA with AWS Lake Formation, Anda hanya dapat MEMBERIKAN dan MENCABUT izin ke peran AWS Identity and Access Management (IAM). Untuk daftar izin, lihat sintaksnya.

Untuk prosedur tersimpan, satu-satunya izin yang dapat Anda berikan adalah EXECUTE.

Anda tidak dapat menjalankan GRANT (pada sumber daya eksternal) dalam blok transaksi (MULAI... AKHIR). Untuk informasi lebih lanjut tentang transaksi, lihat[Tingkat isolasi di Amazon Redshift](c_serial_isolation.md). 

Untuk melihat izin mana yang telah diberikan pengguna untuk database, gunakan[HAS\$1DATABASE\$1PRIVILEGE](r_HAS_DATABASE_PRIVILEGE.md). Untuk melihat izin mana yang diberikan pengguna untuk skema, gunakan. [HAS\$1SCHEMA\$1PRIVILEGE](r_HAS_SCHEMA_PRIVILEGE.md) Untuk melihat izin yang diberikan pengguna untuk tabel, gunakan[HAS\$1TABLE\$1PRIVILEGE](r_HAS_TABLE_PRIVILEGE.md). 

## Sintaksis
<a name="r_GRANT-synopsis"></a>



```
GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES | ALTER | TRUNCATE } [,...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] }
    TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

GRANT { { CREATE | USAGE | TEMPORARY | TEMP | ALTER } [,...] | ALL [ PRIVILEGES ] }
    ON DATABASE db_name [, ...]
    TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

GRANT { { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] }
    ON SCHEMA schema_name [, ...]
    TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
    TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] }
    TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

GRANT USAGE
    ON LANGUAGE language_name [, ...]
    TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]             

GRANT { { ALTER | DROP} [,...] | ALL [ PRIVILEGES ] }
    ON COPY JOB job_name [,...]
    TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

GRANT { { ALTER | DROP | USAGE } [,...] | ALL [ PRIVILEGES ] }
    ON TEMPLATE [database_name.][schema_name.]template_name [,...]
    TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
```

### Memberikan izin tingkat kolom untuk tabel
<a name="grant-column-level"></a>

Berikut ini adalah sintaks untuk izin tingkat kolom pada tabel dan tampilan Amazon Redshift.

```
GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) }
     ON { [ TABLE ] table_name [, ...] }

     TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
```

### Memberikan izin ASSUMEROLE
<a name="grant-assumerole-permissions"></a>

Berikut ini adalah sintaks untuk izin ASSUMEROLE yang diberikan kepada pengguna dan grup dengan peran tertentu. Untuk mulai menggunakan hak istimewa ASSUMEROLE, lihat. [Catatan penggunaan untuk memberikan izin ASSUMEROLE](r_GRANT-usage-notes.md#r_GRANT-usage-notes-assumerole)

```
GRANT ASSUMEROLE
       ON { 'iam_role' [, ...] | default | ALL }
       TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
       FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL } [, ...]
```

### Memberikan izin untuk integrasi Redshift Spectrum dengan Lake Formation
<a name="grant-spectrum-integration-with-lf-syntax"></a>

Berikut ini adalah sintaks untuk integrasi Redshift Spectrum dengan Lake Formation. 

```
GRANT { SELECT | ALL [ PRIVILEGES ] } ( column_list )
    ON EXTERNAL TABLE schema_name.table_name
    TO { IAM_ROLE iam_role } [, ...] [ WITH GRANT OPTION ]

GRANT { { SELECT | ALTER | DROP | DELETE | INSERT }  [, ...] | ALL [ PRIVILEGES ] }
    ON EXTERNAL TABLE schema_name.table_name [, ...]
    TO { { IAM_ROLE iam_role } [, ...] | PUBLIC } [ WITH GRANT OPTION ]

GRANT { { CREATE | ALTER | DROP }  [, ...] | ALL [ PRIVILEGES ] }
    ON EXTERNAL SCHEMA schema_name [, ...]
    TO { IAM_ROLE iam_role } [, ...] [ WITH GRANT OPTION ]
```

### Memberikan izin datashare
<a name="grant-datashare-syntax"></a>

**Izin penyimpanan data sisi produsen**  
Berikut ini adalah sintaks untuk menggunakan GRANT untuk memberikan izin ALTER atau SHARE kepada pengguna atau peran. Pengguna dapat mengubah datashare dengan izin ALTER, atau memberikan penggunaan kepada konsumen dengan izin SHARE. ALTER dan SHARE adalah satu-satunya izin yang dapat Anda berikan pada datashare kepada pengguna dan peran.

```
GRANT { ALTER | SHARE } ON DATASHARE datashare_name
    TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
```

Berikut ini adalah sintaks untuk menggunakan GRANT untuk izin penggunaan datashare di Amazon Redshift. Anda memberikan akses ke datashare ke konsumen menggunakan izin PENGGUNAAN. Anda tidak dapat memberikan izin ini kepada pengguna atau grup pengguna. Izin ini juga tidak mendukung OPSI WITH GRANT untuk pernyataan GRANT. Hanya pengguna atau grup pengguna dengan izin SHARE yang sebelumnya diberikan kepada mereka UNTUK datashare yang dapat menjalankan pernyataan GRANT jenis ini.

```
GRANT USAGE
    ON DATASHARE datashare_name
    TO NAMESPACE 'namespaceGUID' | ACCOUNT 'accountnumber' [ VIA DATA CATALOG ]
```

Berikut ini adalah contoh bagaimana memberikan penggunaan datashare ke akun Lake Formation.

```
GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '123456789012' VIA DATA CATALOG;
```

**Izin penyimpanan data sisi konsumen**  
Berikut ini adalah sintaks untuk izin penggunaan berbagi data GRANT pada database atau skema tertentu yang dibuat dari datashare. 

Izin lebih lanjut yang diperlukan bagi konsumen untuk mengakses database yang dibuat dari datashare bervariasi tergantung pada apakah perintah CREATE DATABASE yang digunakan untuk membuat database dari datashare menggunakan klausa WITH PERMISSIONS atau tidak. Untuk informasi selengkapnya tentang perintah CREATE DATABASE dan klausa WITH PERMISSIONS, lihat. [BUAT BASIS DATA](r_CREATE_DATABASE.md)

**Database dibuat tanpa menggunakan klausa WITH PERMISSIONS**  
Bila Anda memberikan USE pada database yang dibuat dari datashare tanpa klausa WITH PERMISSIONS, Anda tidak perlu memberikan izin secara terpisah pada objek dalam database bersama. Entitas yang diberikan penggunaan pada database yang dibuat dari datashares tanpa klausa WITH PERMISSIONS secara otomatis memiliki akses ke semua objek dalam database.

**Database dibuat menggunakan klausa WITH PERMISSIONS**  
Ketika Anda memberikan USE pada database tempat database bersama dibuat dari datashare dengan klausa WITH PERMISSIONS, identitas sisi konsumen masih harus diberikan izin yang relevan untuk objek database dalam database bersama untuk mengaksesnya, sama seperti Anda akan memberikan izin untuk objek database lokal. Untuk memberikan izin ke objek dalam database yang dibuat dari datashare, gunakan sintaks tiga bagian. `database_name.schema_name.object_name` Untuk memberikan izin ke objek dalam skema eksternal yang menunjuk ke skema bersama dalam database bersama, gunakan sintaks dua bagian. `schema_name.object_name`

```
GRANT USAGE ON { DATABASE shared_database_name [, ...] | SCHEMA shared_schema}
    TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
```

### Memberikan izin terbatas
<a name="grant-scoped-syntax"></a>

Izin tercakup memungkinkan Anda memberikan izin kepada pengguna atau peran pada semua objek dari tipe dalam database atau skema. Pengguna dan peran dengan izin cakupan memiliki izin yang ditentukan pada semua objek saat ini dan masa depan dalam database atau skema.

Anda dapat melihat cakupan izin cakupan tingkat database di. [SVV\$1DATABASE\$1PRIVILEGES](r_SVV_DATABASE_PRIVILEGES.md) Anda dapat melihat cakupan izin cakupan tingkat skema di. [SVV\$1SCHEMA\$1PRIVILEGES](r_SVV_SCHEMA_PRIVILEGES.md)

Untuk informasi selengkapnya tentang izin tercakup, lihat. [Izin tercakup](t_scoped-permissions.md)

Berikut ini adalah sintaks untuk memberikan izin cakupan kepada pengguna dan peran.

```
GRANT { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] }
FOR SCHEMAS IN
DATABASE db_name 
TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]

GRANT 
{ { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [PRIVILEGES] } }
FOR TABLES IN
{SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
TO { username [ WITH GRANT OPTION ] | ROLE role_name} [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
FOR FUNCTIONS IN 
{SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
TO { username [ WITH GRANT OPTION ] | ROLE role_name | } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
FOR PROCEDURES IN
{SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
TO { username [ WITH GRANT OPTION ] | ROLE role_name | } [, ...]

GRANT USAGE
FOR LANGUAGES IN
{DATABASE db_name}
TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]  

GRANT { { CREATE | ALTER | DROP} [,...] | ALL [ PRIVILEGES ] }
FOR COPY JOBS 
IN DATABASE db_name
TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]

GRANT { { ALTER | DROP | USAGE } [,...] | ALL [ PRIVILEGES ] }
FOR TEMPLATES IN
{SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]
```

Perhatikan bahwa izin tercakup tidak membedakan antara izin untuk fungsi dan prosedur. Misalnya, pernyataan berikut memberikan `bob` `EXECUTE` izin untuk fungsi dan prosedur dalam skema`Sales_schema`.

```
GRANT EXECUTE FOR FUNCTIONS IN SCHEMA Sales_schema TO bob;
```

### Memberikan izin pembelajaran mesin
<a name="grant-model-syntax"></a>

Berikut ini adalah sintaks untuk izin model pembelajaran mesin di Amazon Redshift.

```
GRANT CREATE MODEL
    TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON MODEL model_name [, ...]

    TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
```

### Memberikan izin peran
<a name="grant-roles"></a>

Berikut ini adalah sintaks untuk memberikan peran di Amazon Redshift.

```
GRANT { ROLE role_name } [, ...] TO { { user_name [ WITH ADMIN OPTION ] } | ROLE role_name }[, ...]
```

Berikut ini adalah sintaks untuk memberikan izin sistem untuk peran di Amazon Redshift. Perhatikan bahwa Anda hanya dapat memberikan izin untuk peran, bukan pengguna.

```
GRANT
  {
    { CREATE USER | DROP USER | ALTER USER |
    CREATE SCHEMA | DROP SCHEMA |
    ALTER DEFAULT PRIVILEGES |
    ACCESS CATALOG | ACCESS SYSTEM TABLE
    CREATE TABLE | DROP TABLE | ALTER TABLE |
    CREATE OR REPLACE FUNCTION | CREATE OR REPLACE EXTERNAL FUNCTION |
    DROP FUNCTION |
    CREATE OR REPLACE PROCEDURE | DROP PROCEDURE |
    CREATE OR REPLACE VIEW | DROP VIEW |
    CREATE MODEL | DROP MODEL |
    CREATE DATASHARE | ALTER DATASHARE | DROP DATASHARE |
    CREATE LIBRARY | DROP LIBRARY |
    CREATE ROLE | DROP ROLE |
    TRUNCATE TABLE
    VACUUM | ANALYZE | CANCEL |
    IGNORE RLS | EXPLAIN RLS | 
    EXPLAIN MASKING }[, ...]
  }
  | { ALL [ PRIVILEGES ] }
TO ROLE role_name [, ...]
```

### Pemberian izin penjelasan untuk kebijakan keamanan
<a name="grant-row-level-security"></a>

Berikut ini adalah sintaks untuk memberikan izin untuk menjelaskan filter kebijakan keamanan kueri dalam rencana EXPLOW. Kebijakan keamanan yang mungkin termasuk kebijakan keamanan tingkat baris dan kebijakan masking data dinamis.

```
GRANT EXPLAIN { RLS | MASKING } TO ROLE rolename 
```

Berikut ini adalah sintaks untuk memberikan izin untuk melewati kebijakan keamanan tingkat baris untuk kueri. Sintaks ini tidak berlaku untuk kebijakan masking data dinamis.

```
GRANT IGNORE RLS TO ROLE rolename 
```

Berikut ini adalah sintaks untuk memberikan izin tabel pencarian ke kebijakan keamanan yang ditentukan. Kebijakan keamanan yang mungkin termasuk kebijakan keamanan tingkat baris dan kebijakan masking data dinamis.

```
GRANT SELECT ON [ TABLE ] table_name [, ...]
TO { RLS | MASKING } POLICY policy_name [, ...]
```

### Memberikan izin koneksi
<a name="grant-connection-permissions"></a>

Berikut ini adalah sintaks untuk memberikan izin bagi pengguna AWS IAM Identity Center federasi (atau grup) untuk terhubung ke workgroup/cluster:

```
GRANT CONNECT [ON WORKGROUP]
TO [USER] <prefix>:<username> | ROLE <prefix>:<rolename> | PUBLIC;
```

## Parameter
<a name="r_GRANT-parameters"></a>

SELECT   <a name="grant-select"></a>
Memberikan izin untuk memilih data dari tabel atau tampilan menggunakan pernyataan SELECT. Izin SELECT juga diperlukan untuk mereferensikan nilai kolom yang ada untuk operasi UPDATE atau DELETE.

INSERT   <a name="grant-insert"></a>
Memberikan izin untuk memuat data ke dalam tabel menggunakan pernyataan INSERT atau pernyataan COPY. 

UPDATE   <a name="grant-update"></a>
Memberikan izin untuk memperbarui kolom tabel menggunakan pernyataan UPDATE. Operasi UPDATE juga memerlukan izin SELECT, karena mereka harus mereferensikan kolom tabel untuk menentukan baris mana yang akan diperbarui, atau untuk menghitung nilai baru untuk kolom.

DELETE  <a name="grant-delete"></a>
Memberikan izin untuk menghapus baris data dari tabel. Operasi DELETE juga memerlukan izin SELECT, karena mereka harus referensi kolom tabel untuk menentukan baris mana yang akan dihapus.

DROP  <a name="grant-drop"></a>
Bergantung pada objek database, memberikan izin berikut kepada pengguna atau peran:   
+  Untuk tabel, DROP memberikan izin untuk menjatuhkan tabel atau tampilan. Untuk informasi selengkapnya, lihat [MEJA DROP](r_DROP_TABLE.md). 
+  Untuk database, DROP memberikan izin untuk menjatuhkan database. Untuk informasi selengkapnya, lihat [DROP DATABASE](r_DROP_DATABASE.md). 
+  Untuk skema, DROP memberikan izin untuk menghapus skema. Untuk informasi selengkapnya, lihat [DROP SCHEMA](r_DROP_SCHEMA.md). 

REFERENSI   <a name="grant-references"></a>
Memberikan izin untuk membuat kendala kunci asing. Anda harus memberikan izin ini pada tabel referensi dan tabel referensi; jika tidak, pengguna tidak dapat membuat kendala. 

ALTER  <a name="grant-alter"></a>
Bergantung pada objek database, memberikan izin berikut kepada pengguna atau grup pengguna:   
+ Untuk tabel, ALTER memberikan izin untuk mengubah tabel atau tampilan. Untuk informasi selengkapnya, lihat [ALTER TABLE](r_ALTER_TABLE.md).
+ Untuk database, ALTER memberikan izin untuk mengubah database. Untuk informasi selengkapnya, lihat [ALTER DATABASE](r_ALTER_DATABASE.md).
+ Untuk skema, ALTER memberikan izin untuk mengubah skema. Untuk informasi selengkapnya, lihat [ALTER SCHEMA](r_ALTER_SCHEMA.md).
+ Untuk tabel eksternal, ALTER memberikan izin untuk mengubah tabel AWS Glue Data Catalog yang diaktifkan untuk Lake Formation. Izin ini hanya berlaku saat menggunakan Lake Formation.

TRUNCATE  <a name="grant-truncate"></a>
Memberikan izin untuk memotong tabel. Tanpa izin ini, hanya pemilik meja atau superuser yang dapat memotong tabel. Untuk informasi selengkapnya tentang perintah TRUNCATE, lihat. [MEMOTONG](r_TRUNCATE.md)

SEMUA [HAK ISTIMEWA]   <a name="grant-all"></a>
Memberikan semua izin yang tersedia sekaligus kepada pengguna atau peran yang ditentukan. Kata kunci PRIVILEGES adalah opsional.  
GRANT ALL ON SCHEMA tidak memberikan izin CREATE untuk skema eksternal.  
Anda dapat memberikan izin ALL ke tabel di AWS Glue Data Catalog yang diaktifkan untuk Lake Formation. Dalam hal ini, izin individu (seperti SELECT, ALTER, dan sebagainya) dicatat dalam Katalog Data.   
 Amazon Redshift tidak mendukung izin RULE dan TRIGGER. Untuk informasi selengkapnya, kunjungi [Fitur PostgreSQL yang tidak didukung](c_unsupported-postgresql-features.md). 

ASSUMEROLE  <a name="assumerole"></a>
Memberikan izin untuk menjalankan perintah COPY, UNLOAD, EXTERNAL FUNCTION, dan CREATE MODEL kepada pengguna, peran, atau grup dengan peran tertentu. Pengguna, peran, atau grup mengasumsikan peran tersebut saat menjalankan perintah yang ditentukan. Untuk mulai menggunakan izin ASSUMEROLE, lihat. [Catatan penggunaan untuk memberikan izin ASSUMEROLE](r_GRANT-usage-notes.md#r_GRANT-usage-notes-assumerole)

ON [TABLE] *table\$1name*   <a name="grant-on-table"></a>
Memberikan izin yang ditentukan pada tabel atau tampilan. Kata kunci TABLE adalah opsional. Anda dapat membuat daftar beberapa tabel dan tampilan dalam satu pernyataan.

*PADA SEMUA TABEL DALAM SKEMA schema\$1name*   <a name="grant-all-tables"></a>
Memberikan izin yang ditentukan pada semua tabel dan tampilan dalam skema yang direferensikan.

*(*column\$1name* [,...]) DI TABLE table\$1name*   <a name="grant-column-level-privileges"></a>
Memberikan izin yang ditentukan kepada pengguna, grup, atau PUBLIC pada kolom yang ditentukan dari tabel atau tampilan Amazon Redshift.

*(*column\$1list) PADA TABEL EKSTERNAL schema\$1name.table\$1name**   <a name="grant-external-table-column"></a>
Memberikan izin yang ditentukan untuk peran IAM pada kolom yang ditentukan dari tabel Lake Formation dalam skema yang direferensikan.

PADA TABEL EKSTERNAL *schema\$1name.table\$1name*   <a name="grant-external-table"></a>
Memberikan izin yang ditentukan untuk peran IAM pada tabel Lake Formation yang ditentukan dalam skema yang direferensikan.

*PADA SKEMA EKSTERNAL schema\$1name*   <a name="grant-external-schema"></a>
Memberikan izin yang ditentukan ke peran IAM pada skema yang direferensikan.

DI *iam\$1role*   <a name="grant-iam_role"></a>
Memberikan izin yang ditentukan ke peran IAM.

Untuk *nama pengguna*   <a name="grant-to"></a>
Menunjukkan pengguna yang menerima izin.

*KE IAM\$1ROLE iam\$1role*   <a name="grant-to-iam-role"></a>
Menunjukkan peran IAM yang menerima izin.

DENGAN OPSI HIBAH   <a name="grant-with-grant"></a>
Menunjukkan bahwa pengguna yang menerima izin pada gilirannya dapat memberikan izin yang sama kepada orang lain. DENGAN OPSI GRANT tidak dapat diberikan kepada grup atau kepada PUBLIK.

*ROLE role\$1name*   <a name="grant-role"></a>
Memberikan izin untuk peran.

GROUP *group\$1name*   <a name="grant-group"></a>
Memberikan izin ke grup pengguna. Dapat berupa daftar yang dipisahkan koma untuk menentukan beberapa grup pengguna.

UMUM   <a name="grant-public"></a>
Memberikan izin yang ditentukan untuk semua pengguna, termasuk pengguna yang dibuat nanti. PUBLIC mewakili grup yang selalu mencakup semua pengguna. Izin pengguna individu terdiri dari jumlah izin yang diberikan kepada PUBLIK, izin yang diberikan kepada grup mana pun yang dimiliki pengguna, dan izin apa pun yang diberikan kepada pengguna secara individual.  
Pemberian PUBLIK ke TABEL EKSTERNAL Lake Formation menghasilkan pemberian izin kepada kelompok *semua orang* Formasi Danau.

HUBUNGKAN [DI WORKGROUP] KE \$1[USER]<prefix>: <username>\$1 PERAN<prefix>: <rolename>\$1 PUBLIK\$1  
Memberikan izin untuk terhubung ke workgroup atau cluster ke pengguna atau grup AWS IAM Identity Center federasi. Awalan mengidentifikasi penyedia identitas. Ketika diberikan kepada PUBLIC, izin berlaku untuk semua pengguna AWS IAM Identity Center federasi, termasuk pengguna yang dibuat nanti. Izin ini hanya berlaku jika Izin Federasi Amazon Redshift diaktifkan di workgroup atau cluster.

CREATE   <a name="grant-create"></a>
Bergantung pada objek database, memberikan izin berikut kepada pengguna atau grup pengguna:  
+ Untuk database, CREATE memungkinkan pengguna untuk membuat skema dalam database.
+ Untuk skema, CREATE memungkinkan pengguna untuk membuat objek dalam skema. Untuk mengganti nama objek, pengguna harus memiliki izin CREATE dan memiliki objek yang akan diganti namanya.
+ CREATE ON SCHEMA tidak didukung untuk skema eksternal Amazon Redshift Spectrum. Untuk memberikan penggunaan tabel eksternal dalam skema eksternal, berikan SKEMA PENGGUNAAN ON kepada pengguna yang membutuhkan akses. Hanya pemilik skema eksternal atau superuser yang diizinkan untuk membuat tabel eksternal dalam skema eksternal. Untuk mentransfer kepemilikan skema eksternal, gunakan [ALTER SCHEMA](r_ALTER_SCHEMA.md) untuk mengubah pemilik. 

SEMENTARA \$1 TEMP   <a name="grant-temporary"></a>
Memberikan izin untuk membuat tabel sementara dalam database yang ditentukan. Untuk menjalankan kueri Amazon Redshift Spectrum, pengguna database harus memiliki izin untuk membuat tabel sementara dalam database.   
Secara default, pengguna diberikan izin untuk membuat tabel sementara dengan keanggotaan otomatis mereka di grup PUBLIC. Untuk menghapus izin bagi setiap pengguna untuk membuat tabel sementara, cabut izin TEMP dari grup PUBLIC. Kemudian secara eksplisit memberikan izin untuk membuat tabel sementara untuk pengguna atau grup pengguna tertentu.

PADA DATABASE *db\$1name*   <a name="grant-database"></a>
Memberikan izin yang ditentukan pada database.

PEMAKAIAN   <a name="grant-usage"></a>
Memberikan izin PENGGUNAAN pada skema tertentu, yang membuat objek dalam skema tersebut dapat diakses oleh pengguna. Tindakan spesifik pada objek ini harus diberikan secara terpisah (misalnya, izin SELECT atau UPDATE pada tabel) untuk skema Amazon Redshift lokal. Secara default, semua pengguna memiliki izin CREATE dan USE pada skema PUBLIC.   
 Saat Anda memberikan USE ke skema eksternal menggunakan sintaks ON SCHEMA, Anda tidak perlu memberikan tindakan secara terpisah pada objek dalam skema eksternal. Izin katalog yang sesuai mengontrol izin granular pada objek skema eksternal. 

*PADA SKEMA schema\$1name*   <a name="grant-schema"></a>
Memberikan izin yang ditentukan pada skema.  
GRANT CREATE ON SCHEMA dan izin CREATE di GRANT ALL ON SCHEMA tidak didukung untuk skema eksternal Amazon Redshift Spectrum. Untuk memberikan penggunaan tabel eksternal dalam skema eksternal, berikan SKEMA PENGGUNAAN ON kepada pengguna yang membutuhkan akses. Hanya pemilik skema eksternal atau superuser yang diizinkan untuk membuat tabel eksternal dalam skema eksternal. Untuk mentransfer kepemilikan skema eksternal, gunakan [ALTER SCHEMA](r_ALTER_SCHEMA.md) untuk mengubah pemilik. 

*JALANKAN PADA SEMUA FUNGSI DALAM SKEMA schema\$1name*  <a name="grant-all-functions"></a>
Memberikan izin yang ditentukan pada semua fungsi dalam skema yang direferensikan.  
Amazon Redshift tidak mendukung pernyataan GRANT atau REVOKE untuk entri bawaan pg\$1proc yang ditentukan dalam namespace pg\$1catalog. 

JALANKAN PROSEDUR *prosedur\$1name*   <a name="grant-procedure"></a>
Memberikan izin EXECUTE pada prosedur tersimpan tertentu. Karena nama prosedur yang disimpan dapat kelebihan beban, Anda harus menyertakan daftar argumen untuk prosedur tersebut. Untuk informasi selengkapnya, lihat [Penamaan prosedur tersimpan](stored-procedure-naming.md).

*JALANKAN PADA SEMUA PROSEDUR DALAM SKEMA schema\$1name*  <a name="grant-all-procedures"></a>
Memberikan izin yang ditentukan pada semua prosedur yang disimpan dalam skema yang direferensikan.

PENGGUNAAN PADA LANGUAGE *language\$1name*   
Memberikan izin PENGGUNAAN pada suatu bahasa.   
Mulai 1 November 2025, Amazon Redshift tidak akan lagi mendukung pembuatan Python baru. UDFs Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Mulai 1 Juli 2026, Amazon Redshift tidak akan lagi mendukung Python. UDFs Kami menyarankan Anda memigrasikan UDFs Python yang ada ke UDFs Lambda sebelum 1 November 2025. Untuk informasi tentang membuat dan menggunakan Lambda UDFs, lihat. [Lambda Skalar UDFs](udf-creating-a-lambda-sql-udf.md) [Untuk informasi tentang mengonversi UDFs Python yang ada ke UDFs Lambda, lihat posting blog.](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)
Izin PENGGUNAAN PADA BAHASA diperlukan untuk membuat fungsi yang ditentukan pengguna (UDFs) dengan menjalankan perintah. [CREATE FUNCTION](r_CREATE_FUNCTION.md) Untuk informasi selengkapnya, lihat [Keamanan dan izin UDF](udf-security-and-privileges.md).   
Izin PENGGUNAAN PADA BAHASA diperlukan untuk membuat prosedur tersimpan dengan menjalankan [BUAT PROSEDUR](r_CREATE_PROCEDURE.md) perintah. Untuk informasi selengkapnya, lihat [Keamanan dan hak istimewa untuk prosedur tersimpan](stored-procedure-security-and-privileges.md).  
Untuk Python UDFs, gunakan. `plpythonu` Untuk SQL UDFs, gunakan`sql`. Untuk prosedur yang disimpan, gunakan`plpgsql`.

ON COPY JOB *job\$1name*  <a name="on-copy-job"></a>
Memberikan izin yang ditentukan pada pekerjaan penyalinan.

UNTUK \$1SEMUA \$1 SALIN \$1 BONGKAR \$1 FUNGSI EKSTERNAL \$1 BUAT MODEL\$1 [,...]   <a name="grant-for"></a>
Menentukan perintah SQL yang izin diberikan. Anda dapat menentukan SEMUA untuk memberikan izin pada pernyataan COPY, UNLOAD, EXTERNAL FUNCTION, dan CREATE MODEL. Klausul ini hanya berlaku untuk pemberian izin ASSUMEROLE.

MENGUBAH  
Memberikan izin ALTER kepada pengguna untuk menambah atau menghapus objek dari datashare, atau untuk mengatur properti PUBLICACESSIBLE. Untuk informasi selengkapnya, lihat [MENGUBAH DATASHARE](r_ALTER_DATASHARE.md).

BERBAGI  
Memberikan pemrissions kepada pengguna dan grup pengguna untuk menambahkan konsumen data ke datashare. Izin ini diperlukan untuk mengaktifkan konsumen tertentu (akun atau namespace) untuk mengakses datashare dari cluster mereka. Konsumen dapat berupa AWS akun yang sama atau berbeda, dengan namespace cluster yang sama atau berbeda seperti yang ditentukan oleh pengidentifikasi unik global (GUID).

*DI DATASHARE datashare\$1name*   <a name="grant-datashare"></a>
Memberikan izin yang ditentukan pada datashare yang direferensikan. Untuk informasi tentang perincian kontrol akses konsumen, lihat. [Berbagi data di berbagai tingkatan di Amazon Redshift](datashare-overview.md#granularity)

PEMAKAIAN  
Ketika USAGE diberikan ke akun konsumen atau namespace dalam akun yang sama, akun konsumen tertentu atau namespace dalam akun dapat mengakses datashare dan objek datashare dengan cara hanya-baca. 

KE NAMESPACE 'clusternamespace GUID'  
Menunjukkan namespace di akun yang sama di mana konsumen dapat menerima izin yang ditentukan untuk datashare. Ruang nama menggunakan GUID alfanumerik 128-bit.

KE AKUN 'accountnumber' [VIA DATA CATALOG]  
Menunjukkan jumlah akun lain yang konsumennya dapat menerima izin yang ditentukan untuk datashare. Menentukan 'VIA DATA CATALOG' menunjukkan bahwa Anda memberikan penggunaan datashare ke akun Lake Formation. Menghilangkan parameter ini berarti Anda memberikan penggunaan ke akun yang memiliki cluster.

PADA DATABASE *shared\$1database\$1name> [*,...]   <a name="grant-datashare"></a>
Memberikan izin penggunaan yang ditentukan pada database tertentu yang dibuat dalam datashare yang ditentukan.

*PADA SKEMA shared\$1schema*   <a name="grant-datashare"></a>
Memberikan izin yang ditentukan pada skema tertentu yang dibuat dalam datashare yang ditentukan.

UNTUK \$1SKEMA \$1 TABEL \$1 FUNGSI \$1 PROSEDUR \$1 BAHASA \$1 SALINAN PEKERJAAN\$1 DI   
Menentukan objek database untuk memberikan izin untuk. Parameter berikut IN menentukan ruang lingkup izin yang diberikan.

BUAT MODEL  
Memberikan izin CREATE MODEL kepada pengguna atau grup pengguna tertentu.

PADA MODEL *model\$1name*  
Memberikan izin EXECUTE pada model tertentu. 

KATALOG AKSES  
Memberikan izin untuk melihat metadata objek yang relevan yang dapat diakses oleh peran tersebut.

\$1peran\$1 [,...]  
Peran yang akan diberikan kepada peran lain, pengguna, atau PUBLIK.  
PUBLIC mewakili grup yang selalu mencakup semua pengguna. Izin pengguna individu terdiri dari jumlah izin yang diberikan kepada PUBLIK, izin yang diberikan kepada grup mana pun yang dimiliki pengguna, dan izin apa pun yang diberikan kepada pengguna secara individual.

KE \$1\$1*user\$1name* [DENGAN OPSI ADMIN]\$1 \$1 peran\$1 [,...]  
Memberikan peran yang ditentukan kepada pengguna tertentu dengan OPSI WITH ADMIN, peran lain, atau PUBLIC.  
Klausul WITH ADMIN OPTION menyediakan opsi administrasi untuk semua peran yang diberikan kepada semua penerima hibah. 

*JELASKAN \$1RLS \$1 MASKING\$1 UNTUK ROLEName PERAN*  
Memberikan izin untuk menjelaskan filter kebijakan keamanan kueri dalam rencana EXPLOW ke peran. RLS memberikan izin untuk menjelaskan filter kebijakan keamanan tingkat baris. MASKING memberikan izin untuk menjelaskan filter kebijakan penyembunyian data dinamis.

*ABAIKAN RLS KE ROLEName PERAN*   
Memberikan izin untuk melewati kebijakan keamanan tingkat baris untuk kueri ke peran.

*KE \$1RLS \$1 MASKING\$1 POLICY policy\$1name*  
Menunjukkan kebijakan keamanan yang menerima izin. KEBIJAKAN TO RLS menunjukkan kebijakan keamanan tingkat baris. KEBIJAKAN MASKING menunjukkan kebijakan penyembunyian data dinamis.

## Catatan penggunaan
<a name="r_GRANT-usage-notes-link"></a>

Untuk mempelajari lebih lanjut tentang catatan penggunaan untuk GRANT, lihat[Catatan penggunaan](r_GRANT-usage-notes.md).

## Contoh
<a name="r_GRANT-examples-link"></a>

Untuk contoh cara menggunakan GRANT, lihat[Contoh](r_GRANT-examples.md).

# Catatan penggunaan
<a name="r_GRANT-usage-notes"></a>

Untuk memberikan hak istimewa pada suatu objek, Anda harus memenuhi salah satu kriteria berikut:
+ Jadilah pemilik objek.
+ Jadilah superuser.
+ Miliki hak istimewa hibah untuk objek dan hak istimewa itu.

Misalnya, perintah berikut memungkinkan HR pengguna untuk melakukan perintah SELECT pada tabel karyawan dan untuk memberikan dan mencabut hak istimewa yang sama untuk pengguna lain.

```
grant select on table employees to HR with grant option;
```

SDM tidak dapat memberikan hak istimewa untuk operasi apa pun selain SELECT, atau di meja selain karyawan. 

Sebagai contoh lain, perintah berikut memungkinkan HR pengguna untuk melakukan perintah ALTER di meja karyawan dan untuk memberikan dan mencabut hak istimewa yang sama untuk pengguna lain.

```
grant ALTER on table employees to HR with grant option;
```

SDM tidak dapat memberikan hak istimewa untuk operasi apa pun selain ALTER, atau di meja selain karyawan. 

Memiliki hak istimewa yang diberikan pada tampilan tidak berarti memiliki hak istimewa pada tabel yang mendasarinya. Demikian pula, memiliki hak istimewa yang diberikan pada skema tidak berarti memiliki hak istimewa pada tabel dalam skema. Sebagai gantinya, berikan akses ke tabel yang mendasarinya secara eksplisit.

Untuk memberikan hak istimewa ke AWS Lake Formation tabel, peran IAM yang terkait dengan skema eksternal tabel harus memiliki izin untuk memberikan hak istimewa ke tabel eksternal. Contoh berikut membuat skema eksternal dengan peran IAM terkait. `myGrantor` Peran IAM `myGrantor` memiliki izin untuk memberikan izin kepada orang lain. Perintah GRANT menggunakan izin peran IAM `myGrantor` yang terkait dengan skema eksternal untuk memberikan izin ke peran IAM. `myGrantee`

```
create external schema mySchema
from data catalog
database 'spectrum_db'
iam_role 'arn:aws:iam::123456789012:role/myGrantor'
create external database if not exists;
```

```
grant select
on external table mySchema.mytable
to iam_role 'arn:aws:iam::123456789012:role/myGrantee';
```

Jika Anda MEMBERIKAN SEMUA hak istimewa untuk peran IAM, hak istimewa individu diberikan dalam Katalog Data Berkemampuan Lake Formation terkait. Misalnya, BERIKAN SEMUA berikut menghasilkan hak istimewa individu yang diberikan (SELECT, ALTER, DROP, DELETE, dan INSERT) yang ditampilkan di konsol Lake Formation.

```
grant all
on external table mySchema.mytable
to iam_role 'arn:aws:iam::123456789012:role/myGrantee';
```

Superuser dapat mengakses semua objek terlepas dari perintah GRANT dan REVOKE yang menetapkan hak istimewa objek.

## Catatan penggunaan untuk kontrol akses tingkat kolom
<a name="r_GRANT-usage-notes-clp"></a>

Catatan penggunaan berikut berlaku untuk hak istimewa tingkat kolom pada tabel dan tampilan Amazon Redshift. Catatan ini menjelaskan tabel; catatan yang sama berlaku untuk tampilan kecuali kita secara eksplisit mencatat pengecualian. 
+ Untuk tabel Amazon Redshift, Anda hanya dapat memberikan hak SELECT dan UPDATE di tingkat kolom. Untuk tampilan Amazon Redshift, Anda hanya dapat memberikan hak istimewa SELECT di tingkat kolom. 
+ Kata kunci ALL adalah sinonim untuk hak istimewa SELECT dan UPDATE yang digabungkan saat digunakan dalam konteks GRANT tingkat kolom pada tabel. 
+ Jika Anda tidak memiliki hak istimewa SELECT pada semua kolom dalam tabel, melakukan operasi SELECT \$1 hanya mengembalikan kolom-kolom yang dapat Anda akses. Saat menggunakan tampilan, operasi SELECT \$1 mencoba mengakses semua kolom dalam tampilan. Jika Anda tidak memiliki izin untuk mengakses semua kolom, kueri ini gagal dengan kesalahan izin ditolak.
+ SELECT \$1 tidak diperluas ke hanya kolom yang dapat diakses dalam kasus berikut:
  + Anda tidak dapat membuat tampilan reguler hanya dengan kolom yang dapat diakses menggunakan SELECT \$1.
  + Anda tidak dapat membuat tampilan terwujud hanya dengan kolom yang dapat diakses menggunakan SELECT \$1.
+ Jika Anda memiliki hak istimewa SELECT atau UPDATE pada tabel atau tampilan dan menambahkan kolom, Anda masih memiliki hak istimewa yang sama pada tabel atau tampilan dan dengan demikian semua kolomnya. 
+ Hanya pemilik tabel atau superuser yang dapat memberikan hak istimewa tingkat kolom. 
+ Klausa WITH GRANT OPTION tidak didukung untuk hak istimewa tingkat kolom.
+ Anda tidak dapat memiliki hak istimewa yang sama di tingkat tabel dan tingkat kolom. Misalnya, pengguna tidak `data_scientist` dapat memiliki hak istimewa SELECT pada tabel `employee` dan hak pilih pada kolom. `employee.department` Pertimbangkan hasil berikut saat memberikan hak istimewa yang sama ke tabel dan kolom di dalam tabel:
  + Jika pengguna memiliki hak istimewa tingkat tabel di atas meja, maka pemberian hak istimewa yang sama di tingkat kolom tidak berpengaruh. 
  + Jika pengguna memiliki hak istimewa tingkat tabel di atas meja, maka mencabut hak istimewa yang sama untuk satu atau beberapa kolom tabel mengembalikan kesalahan. Sebaliknya, cabut hak istimewa di tingkat tabel. 
  + Jika pengguna memiliki hak istimewa tingkat kolom, maka pemberian hak istimewa yang sama di tingkat tabel mengembalikan kesalahan. 
  + Jika pengguna memiliki hak istimewa tingkat kolom, maka mencabut hak istimewa yang sama di tingkat tabel akan mencabut hak istimewa kolom dan tabel untuk semua kolom di atas tabel. 
+ Anda tidak dapat memberikan hak istimewa tingkat kolom pada tampilan yang mengikat akhir.
+ Untuk membuat tampilan terwujud, Anda harus memiliki hak istimewa SELECT tingkat tabel pada tabel dasar. Bahkan jika Anda memiliki hak istimewa tingkat kolom pada kolom tertentu, Anda tidak dapat membuat tampilan terwujud hanya pada kolom tersebut. Namun, Anda dapat memberikan hak istimewa SELECT ke kolom tampilan terwujud, mirip dengan tampilan biasa. 
+ [Untuk mencari hibah hak istimewa tingkat kolom, gunakan tampilan PG\$1ATTRIBUTE\$1INFO.](r_PG_ATTRIBUTE_INFO.md) 

## Catatan penggunaan untuk memberikan izin ASSUMEROLE
<a name="r_GRANT-usage-notes-assumerole"></a>

Catatan penggunaan berikut berlaku untuk pemberian izin ASSUMEROLE di Amazon Redshift. 

Anda menggunakan izin ASSUMEROLE untuk mengontrol izin akses peran IAM untuk pengguna database, peran, atau grup pada perintah seperti COPY, UNLOAD, FUNGSI EKSTERNAL, atau BUAT MODEL. Setelah Anda memberikan izin ASSUMEROLE kepada pengguna, peran, atau grup untuk peran IAM, pengguna, peran, atau grup dapat mengambil peran tersebut saat menjalankan perintah. Izin ASSUMEROLE memungkinkan Anda untuk memberikan akses ke perintah yang sesuai sesuai kebutuhan.

Hanya pengguna super database yang dapat memberikan atau mencabut izin ASSUMEROLE untuk pengguna, peran, dan grup. Superuser selalu mempertahankan izin ASSUMEROLE.

Untuk mengaktifkan penggunaan izin ASSUMEROLE bagi pengguna, peran, dan grup, pengguna super melakukan dua tindakan berikut:
+ Jalankan pernyataan berikut sekali di cluster:

  ```
  revoke assumerole on all from public for all;
  ```
+ Berikan izin ASSUMEROLE kepada pengguna, peran, dan grup untuk perintah yang sesuai.

Anda dapat menentukan rantai peran dalam klausa ON saat memberikan izin ASSUMEROLE. Anda menggunakan koma untuk memisahkan peran dalam rantai peran, misalnya,`Role1,Role2,Role3`. Jika rantai peran ditentukan saat memberikan izin ASSUMEROLE, Anda harus menentukan rantai peran saat melakukan operasi yang diberikan oleh izin ASSUMEROLE. Anda tidak dapat menentukan peran individu dalam rantai peran saat melakukan operasi yang diberikan oleh izin ASSUMEROLE. Misalnya, jika pengguna, peran, atau grup diberikan rantai peran`Role1,Role2,Role3`, Anda tidak dapat menentukan hanya `Role1` untuk melakukan operasi. 

Jika pengguna mencoba melakukan operasi COPY, UNLOAD, EXTERNAL FUNCTION, atau CREATE MODEL dan belum diberikan izin ASSUMEROLE, pesan yang mirip dengan berikut akan muncul.

```
ERROR:  User awsuser does not have ASSUMEROLE permission on IAM role "arn:aws:iam::123456789012:role/RoleA" for COPY 
```

Untuk mencantumkan pengguna yang telah diberikan akses ke peran dan perintah IAM melalui izin ASSUMEROLE, lihat. [HAS\$1ASSUMEROLE\$1PRIVILEGE](r_HAS_ASSUMEROLE_PRIVILEGE.md) Untuk mencantumkan peran IAM dan izin perintah yang telah diberikan kepada pengguna yang Anda tentukan, lihat. [PG\$1GET\$1IAM\$1ROLE\$1BY\$1USER](PG_GET_IAM_ROLE_BY_USER.md) Untuk mencantumkan pengguna, peran, dan grup yang telah diberikan akses ke peran IAM yang Anda tentukan, lihat[PG\$1GET\$1GRANTEE\$1BY\$1IAM\$1ROLE](PG_GET_GRANTEE_BY_IAMROLE.md).

## Catatan penggunaan untuk memberikan izin pembelajaran mesin
<a name="r_GRANT-usage-notes-create-model"></a>

Anda tidak dapat secara langsung memberikan atau mencabut izin yang terkait dengan fungsi ML. Fungsi ML milik model ML dan izin dikontrol melalui model. Sebagai gantinya, Anda dapat memberikan izin yang terkait dengan model ML. Contoh berikut menunjukkan bagaimana memberikan izin kepada semua pengguna untuk menjalankan fungsi ML yang terkait dengan model. `customer_churn`

```
GRANT EXECUTE ON MODEL customer_churn TO PUBLIC;
```

Anda juga dapat memberikan semua izin kepada pengguna untuk model `customer_churn` ML.

```
GRANT ALL on MODEL customer_churn TO ml_user;
```

Pemberian `EXECUTE` izin yang terkait dengan fungsi ML akan gagal jika ada fungsi ML dalam skema, bahkan jika fungsi ML tersebut sudah memiliki `EXECUTE` izin melalui. `GRANT EXECUTE ON MODEL` Sebaiknya gunakan skema terpisah saat menggunakan `CREATE MODEL` perintah untuk menjaga fungsi ML dalam skema terpisah sendiri. Contoh berikut menunjukkan bagaimana melakukannya.

```
CREATE MODEL ml_schema.customer_churn
FROM customer_data
TARGET churn
FUNCTION ml_schema.customer_churn_prediction
IAM_ROLE default
SETTINGS (
 S3_BUCKET 'amzn-s3-demo-bucket'
);
```

# Contoh
<a name="r_GRANT-examples"></a>

 Contoh berikut memberikan hak istimewa SELECT pada tabel PENJUALAN kepada pengguna. `fred` 

```
grant select on table sales to fred;
```

Contoh berikut memberikan hak istimewa SELECT pada semua tabel dalam skema QA\$1TICKIT kepada pengguna. `fred` 

```
grant select on all tables in schema qa_tickit to fred;
```

Contoh berikut memberikan semua hak istimewa skema pada skema QA\$1TICKIT ke grup pengguna QA\$1USERS. Hak istimewa skema adalah CREATE dan USE. PENGGUNAAN memberi pengguna akses ke objek dalam skema, tetapi tidak memberikan hak istimewa seperti INSERT atau SELECT pada objek tersebut. Berikan hak istimewa pada setiap objek secara terpisah.

```
create group qa_users;
grant all on schema qa_tickit to group qa_users;
```

Contoh berikut memberikan semua hak istimewa pada tabel PENJUALAN dalam skema QA\$1TICKIT untuk semua pengguna dalam grup QA\$1USERS.

```
grant all on table qa_tickit.sales to group qa_users;
```

Contoh berikut memberikan semua hak istimewa pada tabel PENJUALAN dalam skema QA\$1TICKIT untuk semua pengguna dalam grup QA\$1USERS dan RO\$1USERS.

```
grant all on table qa_tickit.sales to group qa_users, group ro_users;
```

Contoh berikut memberikan hak istimewa DROP pada tabel PENJUALAN dalam skema QA\$1TICKIT untuk semua pengguna dalam grup QA\$1USERS.

```
grant drop on table qa_tickit.sales to group qa_users;>
```

Urutan perintah berikut menunjukkan bagaimana akses ke skema tidak memberikan hak istimewa pada tabel dalam skema. 

```
create user schema_user in group qa_users password 'Abcd1234';
create schema qa_tickit;
create table qa_tickit.test (col1 int);
grant all on schema qa_tickit to schema_user;

set session authorization schema_user;
select current_user;


current_user
--------------
schema_user
(1 row)


select count(*) from qa_tickit.test;


ERROR: permission denied for relation test [SQL State=42501]


set session authorization dw_user;
grant select on table qa_tickit.test to schema_user;
set session authorization schema_user;
select count(*) from qa_tickit.test;


count
-------
0
(1 row)
```

Urutan perintah berikut menunjukkan bagaimana akses ke tampilan tidak menyiratkan akses ke tabel dasarnya. Pengguna bernama VIEW\$1USER tidak dapat memilih dari tabel DATE, meskipun pengguna ini telah diberikan semua hak istimewa pada VIEW\$1DATE. 

```
create user view_user password 'Abcd1234';
create view view_date as select * from date;
grant all on view_date to view_user;
set session authorization view_user;
select current_user;


current_user
--------------
view_user
(1 row)


select count(*) from view_date;


count
-------
365
(1 row)


select count(*) from date;


ERROR:  permission denied for relation date
```

Contoh berikut memberikan hak istimewa SELECT pada `cust_name` dan `cust_phone` kolom `cust_profile` tabel kepada pengguna. `user1` 

```
grant select(cust_name, cust_phone) on cust_profile to user1;
```

Contoh berikut memberikan hak istimewa SELECT pada `cust_phone` kolom `cust_name` dan hak istimewa UPDATE pada `cust_contact_preference` kolom `cust_profile` tabel ke grup. `sales_group` 

```
grant select(cust_name, cust_phone), update(cust_contact_preference) on cust_profile to group sales_group;
```

Contoh berikut menunjukkan penggunaan kata kunci ALL untuk memberikan hak SELECT dan UPDATE pada tiga kolom tabel `cust_profile` ke `sales_admin` grup. 

```
grant ALL(cust_name, cust_phone,cust_contact_preference) on cust_profile to group sales_admin;
```

Contoh berikut memberikan hak istimewa SELECT pada `cust_name` kolom `cust_profile_vw` tampilan kepada pengguna. `user2` 

```
grant select(cust_name) on cust_profile_vw to user2;
```

## Contoh pemberian akses ke datashares
<a name="r_GRANT-examples-datashare"></a>

Contoh berikut menunjukkan izin penggunaan berbagi data GRANT pada database atau skema tertentu yang dibuat dari datashare. 

Dalam contoh berikut, admin sisi produsen memberikan izin USAGE pada `salesshare` datashare ke namespace yang ditentukan. 

```
GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
```

Dalam contoh berikut, admin sisi konsumen memberikan izin PENGGUNAAN pada to. `sales_db` `Bob`

```
GRANT USAGE ON DATABASE sales_db TO Bob;
```

Dalam contoh berikut, admin sisi konsumen memberikan izin PENGGUNAAN HIBAH pada `sales_schema` skema untuk peran tersebut. `Analyst_role` `sales_schema`adalah skema eksternal yang menunjuk ke sales\$1db.

```
GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
```

Pada titik ini, `Bob` dan `Analyst_role` dapat mengakses semua objek database di `sales_schema` dan`sales_db`.

Contoh berikut menunjukkan pemberian izin tingkat objek tambahan untuk objek dalam database bersama. Izin tambahan ini hanya diperlukan jika perintah CREATE DATABASE yang digunakan untuk membuat database bersama menggunakan klausa WITH PERMISSIONS. Jika perintah CREATE DATABASE tidak menggunakan WITH PERMISSIONS, pemberian USE pada database bersama memberikan akses penuh ke semua objek dalam database tersebut.

```
GRANT SELECT ON sales_db.sales_schema.tickit_sales_redshift to Bob;
```

## Contoh pemberian izin cakupan
<a name="r_GRANT-examples-scoped"></a>

Contoh berikut memberikan penggunaan untuk semua skema saat ini dan masa depan dalam `Sales_db` database untuk peran tersebut. `Sales`

```
GRANT USAGE FOR SCHEMAS IN DATABASE Sales_db TO ROLE Sales;
```

Contoh berikut memberikan izin SELECT untuk semua tabel saat ini dan masa depan dalam `Sales_db` database kepada pengguna`alice`, dan juga memberikan `alice` izin untuk memberikan izin cakupan pada `Sales_db` tabel ke pengguna lain.

```
GRANT SELECT FOR TABLES IN DATABASE Sales_db TO alice WITH GRANT OPTION;
```

Contoh berikut memberikan izin EXECUTE untuk fungsi dalam `Sales_schema` skema kepada pengguna. `bob`

```
GRANT EXECUTE FOR FUNCTIONS IN SCHEMA Sales_schema TO bob;
```

Contoh berikut memberikan semua izin untuk semua tabel dalam `ShareSchema` skema `ShareDb` database untuk peran. `Sales` Saat menentukan skema, Anda dapat menentukan database skema menggunakan format dua bagian. `database.schema`

```
GRANT ALL FOR TABLES IN SCHEMA ShareDb.ShareSchema TO ROLE Sales;
```

Contoh berikut ini sama dengan yang sebelumnya. Anda dapat menentukan database menggunakan `DATABASE` kata kunci alih-alih menggunakan format dua bagian.

```
GRANT ALL FOR TABLES IN SCHEMA ShareSchema DATABASE ShareDb TO ROLE Sales;
```

## Contoh pemberian hak istimewa ASSUMEROLE
<a name="r_GRANT-examples-assumerole"></a>

Berikut ini adalah contoh pemberian hak istimewa ASSUMEROLE.

Contoh berikut menunjukkan pernyataan REVOKE bahwa superuser berjalan sekali di cluster untuk mengaktifkan penggunaan hak istimewa ASSUMEROLE untuk pengguna dan grup. Kemudian, superuser memberikan hak istimewa ASSUMEROLE kepada pengguna dan grup untuk perintah yang sesuai. Untuk informasi tentang mengaktifkan penggunaan hak istimewa ASSUMEROLE untuk pengguna dan grup, lihat. [Catatan penggunaan untuk memberikan izin ASSUMEROLE](r_GRANT-usage-notes.md#r_GRANT-usage-notes-assumerole)

```
revoke assumerole on all from public for all;
```

Contoh berikut memberikan hak istimewa ASSUMEROLE kepada pengguna untuk peran IAM untuk melakukan `reg_user1` operasi COPY. `Redshift-S3-Read` 

```
grant assumerole on 'arn:aws:iam::123456789012:role/Redshift-S3-Read'
to reg_user1 for copy;
```

Contoh berikut memberikan hak istimewa ASSUMEROLE kepada pengguna untuk rantai `RoleA` peran IAM, `reg_user1` untuk melakukan operasi UNLOAD. `RoleB` 

```
grant assumerole
on 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB'
to reg_user1
for unload;
```

Berikut ini adalah contoh perintah UNLOAD menggunakan rantai `RoleA` peran IAM,. `RoleB`

```
unload ('select * from venue limit 10')
to 's3://companyb/redshift/venue_pipe_'
iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
```

Contoh berikut memberikan hak istimewa ASSUMEROLE kepada pengguna untuk peran IAM `reg_user1` untuk membuat fungsi eksternal. `Redshift-Exfunc` 

```
grant assumerole on 'arn:aws:iam::123456789012:role/Redshift-Exfunc'
to reg_user1 for external function;
```

Contoh berikut memberikan hak istimewa ASSUMEROLE kepada pengguna untuk peran `Redshift-model` IAM `reg_user1` untuk membuat model pembelajaran mesin. 

```
grant assumerole on 'arn:aws:iam::123456789012:role/Redshift-ML'
to reg_user1 for create model;
```

## Contoh pemberian hak istimewa PERAN
<a name="r_GRANT-examples-role"></a>

Contoh berikut memberikan sample\$1role1 ke user1.

```
CREATE ROLE sample_role1;
GRANT ROLE sample_role1 TO user1;
```

Contoh berikut memberikan sample\$1role1 ke user1 dengan OPSI WITH ADMIN, menetapkan sesi saat ini untuk user1, dan user1 memberikan sample\$1role1 ke user2.

```
GRANT ROLE sample_role1 TO user1 WITH ADMIN OPTION;
SET SESSION AUTHORIZATION user1;
GRANT ROLE sample_role1 TO user2;
```

Contoh berikut memberikan sample\$1role1 ke sample\$1role2.

```
GRANT ROLE sample_role1 TO ROLE sample_role2;
```

Contoh berikut memberikan sample\$1role2 ke sample\$1role3 dan sample\$1role4. Kemudian mencoba memberikan sample\$1role3 ke sample\$1role1.

```
GRANT ROLE sample_role2 TO ROLE sample_role3;
GRANT ROLE sample_role3 TO ROLE sample_role2;
ERROR: cannot grant this role, a circular dependency was detected between these roles
```

Contoh berikut memberikan hak istimewa sistem CREATE USER ke sample\$1role1.

```
GRANT CREATE USER TO ROLE sample_role1;
```

Contoh berikut memberikan peran `sys:dba` yang ditentukan sistem ke user1.

```
GRANT ROLE sys:dba TO user1;
```

Contoh berikut mencoba memberikan sample\$1role3 dalam ketergantungan melingkar ke sample\$1role2.

```
CREATE ROLE sample_role3;
GRANT ROLE sample_role2 TO ROLE sample_role3;
GRANT ROLE sample_role3 TO ROLE sample_role2; -- fail
ERROR:  cannot grant this role, a circular dependency was detected between these roles
```