11-sql-server-cdc-ssl.td 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. # Setup SQL Server state.
  10. $ postgres-execute connection=postgres://mz_system:materialize@${testdrive.materialize-internal-sql-addr}
  11. ALTER SYSTEM SET enable_sql_server_source = true;
  12. > CREATE SECRET ssl_ca AS '${arg.ssl-ca}'
  13. > CREATE SECRET alt_ssl_ca AS '${arg.alt-ssl-ca}'
  14. > CREATE SECRET IF NOT EXISTS sql_server_pass AS '${arg.default-sql-server-password}'
  15. # Create a table that has CDC enabled.
  16. $ sql-server-connect name=sql-server
  17. server=tcp:sql-server,1433;IntegratedSecurity=true;TrustServerCertificate=true;User ID=${arg.default-sql-server-user};Password=${arg.default-sql-server-password}
  18. $ sql-server-execute name=sql-server
  19. DROP DATABASE IF EXISTS test_ssl;
  20. CREATE DATABASE test_ssl;
  21. USE test_ssl;
  22. EXEC sys.sp_cdc_enable_db;
  23. ALTER DATABASE test_ssl SET ALLOW_SNAPSHOT_ISOLATION ON;
  24. CREATE TABLE t1_pk (key_col VARCHAR(20) PRIMARY KEY, val_col VARCHAR(1024));
  25. EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 't1_pk', @role_name = 'SA', @supports_net_changes = 0;
  26. INSERT INTO t1_pk VALUES ('a', 'hello world'), ('b', 'foobar'), ('c', 'anotha one');
  27. CREATE TABLE t2_no_cdc (key_col VARCHAR(20) PRIMARY KEY, val_col VARCHAR(1024));
  28. CREATE TABLE t3_text (value VARCHAR(100));
  29. EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 't3_text', @role_name = 'SA', @supports_net_changes = 0;
  30. # Exercise Materialize.
  31. # Test SSL MODE disabled.
  32. > CREATE CONNECTION no_ssl_connection TO SQL SERVER (
  33. HOST 'sql-server',
  34. PORT 1433,
  35. DATABASE test_ssl,
  36. USER '${arg.default-sql-server-user}',
  37. PASSWORD = SECRET sql_server_pass,
  38. SSL MODE disabled
  39. );
  40. > VALIDATE CONNECTION no_ssl_connection;
  41. > SELECT name, type from mz_connections WHERE name = 'no_ssl_connection';
  42. name type
  43. ---------------------------------------
  44. no_ssl_connection sql-server
  45. > DROP CONNECTION no_ssl_connection;
  46. # Test SSL MODE required.
  47. > CREATE CONNECTION required_ssl_connection TO SQL SERVER (
  48. HOST 'sql-server',
  49. PORT 1433,
  50. DATABASE test_ssl,
  51. USER '${arg.default-sql-server-user}',
  52. PASSWORD = SECRET sql_server_pass,
  53. SSL MODE required
  54. );
  55. > VALIDATE CONNECTION required_ssl_connection;
  56. > SELECT name, type from mz_connections WHERE name = 'required_ssl_connection';
  57. name type
  58. ---------------------------------------
  59. required_ssl_connection sql-server
  60. > DROP CONNECTION required_ssl_connection;
  61. # Test SSL MODE verify_ca.''
  62. # verify_ca requires a CA
  63. ! CREATE CONNECTION missing_ca TO SQL SERVER (
  64. HOST 'sql-server',
  65. PORT 1433,
  66. DATABASE test_ssl,
  67. USER '${arg.default-sql-server-user}',
  68. PASSWORD SECRET sql_server_pass,
  69. SSL MODE verify_ca
  70. );
  71. contains:invalid CONNECTION: SSL MODE 'verify_ca' requires SSL CERTIFICATE AUTHORITY
  72. # verify_ca fails with incorrect CA
  73. ! CREATE CONNECTION invalid_ca TO SQL SERVER (
  74. HOST 'sql-server',
  75. PORT 1433,
  76. DATABASE test_ssl,
  77. USER '${arg.default-sql-server-user}',
  78. PASSWORD SECRET sql_server_pass,
  79. SSL MODE verify_ca,
  80. SSL CERTIFICATE AUTHORITY SECRET alt_ssl_ca
  81. );
  82. contains:certificate verify failed
  83. > SELECT count(*) from mz_connections WHERE name = 'invalid_ca';
  84. 0
  85. # verify_ca works with correct CA
  86. > CREATE CONNECTION verify_ca_ssl_connection TO SQL SERVER (
  87. HOST 'sql-server',
  88. PORT 1433,
  89. DATABASE test_ssl,
  90. USER '${arg.default-sql-server-user}',
  91. PASSWORD SECRET sql_server_pass,
  92. SSL MODE verify_ca,
  93. SSL CERTIFICATE AUTHORITY SECRET ssl_ca
  94. );
  95. > VALIDATE CONNECTION verify_ca_ssl_connection;
  96. > SELECT name, type from mz_connections WHERE name = 'verify_ca_ssl_connection';
  97. name type
  98. ---------------------------------------
  99. verify_ca_ssl_connection sql-server
  100. > DROP CONNECTION verify_ca_ssl_connection;