123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- # Copyright Materialize, Inc. and contributors. All rights reserved.
- #
- # Use of this software is governed by the Business Source License
- # included in the LICENSE file at the root of this repository.
- #
- # As of the Change Date specified in that file, in accordance with
- # the Business Source License, use of this software will be governed
- # by the Apache License, Version 2.0.
- # Test privilege checks of creating sinks. All other tests are implemented in SQLogicTests
- $ postgres-execute connection=postgres://mz_system:materialize@${testdrive.materialize-internal-sql-addr}
- ALTER SYSTEM SET enable_connection_validation_syntax = true
- $ postgres-connect name=mz_system url=postgres://mz_system:materialize@${testdrive.materialize-internal-sql-addr}
- $ postgres-execute connection=mz_system
- ALTER SYSTEM SET enable_rbac_checks TO true;
- CREATE CONNECTION kafka_conn TO KAFKA (BROKER '${testdrive.kafka-addr}', SECURITY PROTOCOL PLAINTEXT);
- CREATE CONNECTION IF NOT EXISTS csr_conn TO CONFLUENT SCHEMA REGISTRY (URL '${testdrive.schema-registry-url}');
- CREATE TABLE t (a INT);
- REVOKE USAGE ON SCHEMA materialize.public FROM PUBLIC;
- REVOKE USAGE ON DATABASE materialize FROM PUBLIC;
- REVOKE USAGE ON CLUSTER quickstart FROM PUBLIC;
- REVOKE ALL PRIVILEGES ON SCHEMA materialize.public FROM materialize;
- REVOKE ALL PRIVILEGES ON DATABASE materialize FROM materialize;
- REVOKE ALL PRIVILEGES ON CLUSTER quickstart FROM materialize;
- REVOKE ALL PRIVILEGES ON SYSTEM FROM materialize;
- # CREATE CLUSTER
- ! CREATE CLUSTER c REPLICAS (r1 (SIZE '1'));
- contains:permission denied for SYSTEM
- $ postgres-execute connection=mz_system
- GRANT CREATECLUSTER ON SYSTEM TO materialize;
- > CREATE CLUSTER c REPLICAS (r1 (SIZE '1'));
- $ postgres-execute connection=mz_system
- REVOKE ALL PRIVILEGES ON SYSTEM FROM materialize;
- # CREATE SINK
- $ postgres-execute connection=mz_system
- CREATE CLUSTER sink_cluster REPLICAS (r1 (SIZE '1'));
- ! CREATE SINK s
- IN CLUSTER sink_cluster
- FROM t
- INTO KAFKA CONNECTION kafka_conn (TOPIC 'output-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE DEBEZIUM
- contains:permission denied for SCHEMA "materialize.public"
- $ postgres-execute connection=mz_system
- GRANT USAGE ON SCHEMA materialize.public TO materialize;
- ! CREATE SINK s
- IN CLUSTER sink_cluster
- FROM t
- INTO KAFKA CONNECTION kafka_conn (TOPIC 'output-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE DEBEZIUM
- contains:permission denied for CONNECTION "materialize.public.kafka_conn"
- $ postgres-execute connection=mz_system
- GRANT USAGE ON CONNECTION kafka_conn TO materialize;
- ! CREATE SINK s
- IN CLUSTER sink_cluster
- FROM t
- INTO KAFKA CONNECTION kafka_conn (TOPIC 'output-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE DEBEZIUM
- contains:permission denied for CONNECTION "materialize.public.csr_conn"
- $ postgres-execute connection=mz_system
- GRANT USAGE ON CONNECTION csr_conn TO materialize;
- ! CREATE SINK s
- IN CLUSTER sink_cluster
- FROM t
- INTO KAFKA CONNECTION kafka_conn (TOPIC 'output-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE DEBEZIUM
- contains:permission denied for SCHEMA "materialize.public"
- $ postgres-execute connection=mz_system
- GRANT CREATE ON SCHEMA materialize.public TO materialize;
- ! CREATE SINK s
- IN CLUSTER sink_cluster
- FROM t
- INTO KAFKA CONNECTION kafka_conn (TOPIC 'output-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE DEBEZIUM
- contains:permission denied for TABLE "materialize.public.t"
- $ postgres-execute connection=mz_system
- GRANT SELECT ON TABLE t TO materialize;
- ! CREATE SINK s
- IN CLUSTER sink_cluster
- FROM t
- INTO KAFKA CONNECTION kafka_conn (TOPIC 'output-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE DEBEZIUM
- contains:permission denied for CLUSTER "sink_cluster"
- $ postgres-execute connection=mz_system
- GRANT CREATE ON CLUSTER sink_cluster TO materialize;
- > CREATE SINK s
- IN CLUSTER sink_cluster
- FROM t
- INTO KAFKA CONNECTION kafka_conn (TOPIC 'output-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE DEBEZIUM
- $ postgres-execute connection=mz_system
- REVOKE CREATE, USAGE ON SCHEMA materialize.public FROM materialize;
- REVOKE USAGE ON CONNECTION kafka_conn, csr_conn FROM materialize;
- REVOKE SELECT ON TABLE t FROM materialize;
- REVOKE CREATECLUSTER ON SYSTEM FROM materialize;
- REVOKE CREATE ON CLUSTER sink_cluster FROM materialize;
- DROP SINK s;
- DROP TABLE t;
- DROP CLUSTER sink_cluster;
- # CREATE CONNECTION
- $ postgres-execute connection=mz_system
- CREATE SECRET confluent_username AS 'materialize';
- CREATE SECRET confluent_password AS 'password';
- ! CREATE CONNECTION conn TO KAFKA (
- BROKER '${testdrive.kafka-addr}',
- SASL MECHANISMS = 'PLAIN',
- SASL USERNAME = SECRET confluent_username,
- SASL PASSWORD = SECRET confluent_password
- ) WITH (VALIDATE = false);
- contains:permission denied for SCHEMA "materialize.public"
- $ postgres-execute connection=mz_system
- GRANT USAGE ON SCHEMA materialize.public TO materialize;
- ! CREATE CONNECTION conn TO KAFKA (
- BROKER '${testdrive.kafka-addr}',
- SASL MECHANISMS = 'PLAIN',
- SASL USERNAME = SECRET confluent_username,
- SASL PASSWORD = SECRET confluent_password
- ) WITH (VALIDATE = false);
- contains:permission denied for SECRET "materialize.public.confluent_username"
- $ postgres-execute connection=mz_system
- GRANT USAGE ON SECRET confluent_username TO materialize;
- ! CREATE CONNECTION conn TO KAFKA (
- BROKER '${testdrive.kafka-addr}',
- SASL MECHANISMS = 'PLAIN',
- SASL USERNAME = SECRET confluent_username,
- SASL PASSWORD = SECRET confluent_password
- ) WITH (VALIDATE = false);
- contains:permission denied for SECRET "materialize.public.confluent_password"
- $ postgres-execute connection=mz_system
- GRANT USAGE ON SECRET confluent_password TO materialize;
- ! CREATE CONNECTION conn TO KAFKA (
- BROKER '${testdrive.kafka-addr}',
- SASL MECHANISMS = 'PLAIN',
- SASL USERNAME = SECRET confluent_username,
- SASL PASSWORD = SECRET confluent_password
- ) WITH (VALIDATE = false);
- contains:permission denied for SCHEMA "materialize.public"
- $ postgres-execute connection=mz_system
- GRANT CREATE ON SCHEMA materialize.public TO materialize;
- > CREATE CONNECTION conn TO KAFKA (
- BROKER '${testdrive.kafka-addr}',
- SASL MECHANISMS = 'PLAIN',
- SASL USERNAME = SECRET confluent_username,
- SASL PASSWORD = SECRET confluent_password
- ) WITH (VALIDATE = false);
- $ postgres-execute connection=mz_system
- REVOKE CREATE, USAGE ON SCHEMA materialize.public FROM materialize;
- REVOKE USAGE ON SECRET confluent_username, confluent_password FROM materialize;
- DROP CONNECTION conn;
- DROP SECRET confluent_username;
- DROP SECRET confluent_password;
- ## CREATE SOURCE
- $ kafka-create-topic topic=rbac partitions=1
- $ set int-schema={"type": "record", "name": "schema_int", "fields": [ {"name": "f1", "type": "int"} ] }
- $ kafka-ingest format=avro topic=rbac schema=${int-schema} timestamp=1
- {"f1": 123}
- $ postgres-execute connection=mz_system
- GRANT CREATECLUSTER ON SYSTEM TO materialize;
- > CREATE CLUSTER source_cluster REPLICAS (r1 (SIZE '1'));
- ! CREATE SOURCE s
- IN CLUSTER source_cluster
- FROM KAFKA CONNECTION kafka_conn (TOPIC 'testdrive-rbac-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE NONE
- contains:permission denied for SCHEMA "materialize.public"
- $ postgres-execute connection=mz_system
- GRANT USAGE ON SCHEMA materialize.public TO materialize;
- ! CREATE SOURCE s
- IN CLUSTER source_cluster
- FROM KAFKA CONNECTION kafka_conn (TOPIC 'testdrive-rbac-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE NONE
- contains:permission denied for CONNECTION "materialize.public.kafka_conn"
- $ postgres-execute connection=mz_system
- GRANT USAGE ON CONNECTION kafka_conn TO materialize;
- ! CREATE SOURCE s
- IN CLUSTER source_cluster
- FROM KAFKA CONNECTION kafka_conn (TOPIC 'testdrive-rbac-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE NONE
- contains:permission denied for CONNECTION "materialize.public.csr_conn"
- $ postgres-execute connection=mz_system
- GRANT USAGE ON CONNECTION csr_conn TO materialize;
- ! CREATE SOURCE s
- IN CLUSTER source_cluster
- FROM KAFKA CONNECTION kafka_conn (TOPIC 'testdrive-rbac-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE NONE
- contains:permission denied for SCHEMA "materialize.public"
- $ postgres-execute connection=mz_system
- GRANT CREATE ON SCHEMA materialize.public TO materialize;
- > CREATE SOURCE s
- IN CLUSTER source_cluster
- FROM KAFKA CONNECTION kafka_conn (TOPIC 'testdrive-rbac-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE NONE
|