mirror of
https://github.com/supabase/supabase.git
synced 2026-05-06 17:00:27 -04:00
0e736457c8
## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Instructed granting least-privilege table permissions for anon, authenticated, and service roles prior to enabling Row Level Security across multiple guides and quickstarts. * Clarified SQL examples and inline comments, added explicit GRANT steps and RLS SELECT policies, rephrased policy guidance, and adjusted example ordering and section numbering for clearer setup and testing. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
85 lines
2.8 KiB
Plaintext
85 lines
2.8 KiB
Plaintext
<StepHikeCompact.Details title="Create a Supabase project">
|
|
|
|
Go to [database.new](https://database.new) and create a new Supabase project.
|
|
|
|
Alternatively, you can create a project using the Management API:
|
|
|
|
</StepHikeCompact.Details>
|
|
|
|
<StepHikeCompact.Code>
|
|
|
|
```bash
|
|
# First, get your access token from https://supabase.com/dashboard/account/tokens
|
|
export SUPABASE_ACCESS_TOKEN="your-access-token"
|
|
|
|
# List your organizations to get the organization ID
|
|
curl -H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \
|
|
https://api.supabase.com/v1/organizations
|
|
|
|
# Create a new project (replace <org-id> with your organization ID)
|
|
curl -X POST https://api.supabase.com/v1/projects \
|
|
-H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"organization_id": "<org-id>",
|
|
"name": "My Project",
|
|
"region": "us-east-1",
|
|
"db_pass": "<your-secure-password>"
|
|
}'
|
|
```
|
|
|
|
</StepHikeCompact.Code>
|
|
|
|
<StepHikeCompact.Details>
|
|
|
|
When your project is up and running, go to the [**Table Editor**](/dashboard/project/_/editor) section of the Dashboard, create a new table and insert some data. Then in the [**Integrations > Data API**](/dashboard/project/_/integrations/data_api/settings) section of the Dashboard, expose the specific tables or functions you want to access. To automatically grant access for new tables and functions in `public`, enable **Default privileges for new entities**.
|
|
|
|
Alternatively, you can run the following snippet in your project's [SQL Editor](/dashboard/project/_/sql/new).
|
|
|
|
This creates an `instruments` table with some sample data, sets a secure baseline by setting only the privileges each Postgres role needs, and adds [Row Level Security (RLS)](/docs/guides/database/postgres/row-level-security) for enhanced security for database data by default.
|
|
|
|
</StepHikeCompact.Details>
|
|
|
|
<StepHikeCompact.Code>
|
|
|
|
```sql SQL_EDITOR
|
|
-- Create the table
|
|
create table instruments (
|
|
id bigint primary key generated always as identity,
|
|
name text not null
|
|
);
|
|
|
|
-- Insert sample data into the table
|
|
insert into instruments (name)
|
|
values
|
|
('violin'),
|
|
('viola'),
|
|
('cello');
|
|
|
|
-- Grant the privileges the role needs, which is read access
|
|
grant select on public.instruments to anon;
|
|
|
|
-- Enable row level security for the table
|
|
alter table instruments enable row level security;
|
|
```
|
|
|
|
</StepHikeCompact.Code>
|
|
|
|
<StepHikeCompact.Details>
|
|
|
|
Create an RLS policy to make the data in your table publicly readable:
|
|
|
|
</StepHikeCompact.Details>
|
|
|
|
<StepHikeCompact.Code>
|
|
|
|
```sql SQL_EDITOR
|
|
-- Create a policy to allow the anon role to read from the instruments table
|
|
create policy "public can read instruments"
|
|
on public.instruments
|
|
for select to anon
|
|
using (true);
|
|
```
|
|
|
|
</StepHikeCompact.Code>
|