Capability library / Application package

Microsoft SQL Server package v1.0.0

Microsoft SQL Server: query one table and insert, update or delete its rows through the native SQL Server adapter and a deployment statement allowlist. Draft awaiting owner review.

Review state: In review · Not part of the reviewed release library

This page describes AAES Govern’s controls. AAES Operate has private-work permissions, operational reviews and recorded-spend limits; it does not include Govern. About AAES Govern

Before you enable this package

Draft package; not part of the reviewed library. This draft is held and not yet available: AAES has no Microsoft SQL Server driver, so every capability in this package is refused before a connection is attempted. It stays unusable unless AAES adds a SQL Server driver and the package passes review again.

Read each action's effects and exclusions below. Before installation, also read the complete package requirements, including credential issuance, scope, expiry, and provider permissions. These are deployment prerequisites, not capabilities this package supplies.

Capabilities (4)

Each capability below is one registered operation. The complete package JSON includes its exact network destination allowlist. The repository stores it at packs/mssql.json and embeds a copy in the release binary.

Risk tiers. R0 is the minimum for reads. R2 is the minimum for write, create, update, execute, and invoke. R3 is the minimum for delete, send, pay, deploy, approve, share, and transfer. Operators can raise these levels. A minimum tier does not measure the operation's business or confidentiality risk.

On supported execution paths routed through AAES Govern, the R3 actions listed below require approval by an authorized person. Bypass paths and observation-only registrations are outside that guarantee. A provider's restoration feature does not remove this approval requirement. A provider-side approval, such as approving a GitLab merge request, is also separate from AAES Govern human approval. The capability matrix shows which execution paths are implemented, restricted to lab use, or refused at startup. Live compatibility must be tested in your environment.

Field guide. Endpoint is the service address and request method. Connector is the adapter that makes the call. Custody describes how the credential is held; the credential reference identifies the value to resolve. Data class sets handling requirements: pii means personal data, financial means financial records, and internal means internal organizational data.

mssql.table.query v1.0.0R0

Kind
tool
Action
read
Endpoint
query sqlserver://DB_HOST:1433/DB_NAME
Connector
sql
Custody
customer_vault
Credential ref
secret-ref-mssql-role
Data class
pii

Query table.

Run an allowlisted SELECT against the table. DB_HOST, DB_NAME and the table behind mssql-table are placeholders.

mssql.row.insert v1.0.0R2

Kind
tool
Action
create
Endpoint
exec sqlserver://DB_HOST:1433/DB_NAME
Connector
sql
Custody
customer_vault
Credential ref
secret-ref-mssql-role
Data class
pii

Insert row.

Run an allowlisted INSERT against the table. The deployment statement allowlist must hold the exact statement; this registration names the operation and does not supply that control.

mssql.row.update v1.0.0R2

Kind
tool
Action
update
Endpoint
exec sqlserver://DB_HOST:1433/DB_NAME
Connector
sql
Custody
customer_vault
Credential ref
secret-ref-mssql-role
Data class
pii

Update row.

Run an allowlisted UPDATE against the table, registered at the R2 minimum for update. An overwritten value may be unrecoverable without a backup; assess that separately.

mssql.row.delete v1.0.0R3

Kind
tool
Action
delete
Endpoint
exec sqlserver://DB_HOST:1433/DB_NAME
Connector
sql
Custody
customer_vault
Credential ref
secret-ref-mssql-role
Data class
pii

Delete row.

Run an allowlisted DELETE against the table. Delete is one of the designated actions requiring human approval, so the operator approval gate applies.

Credential reference

The credential field names a reference rather than containing credential material. Packs are designed not to contain secrets; the format checks cover only known credential formats and cannot prove that arbitrary text contains no secrets. Installing a package registers its capabilities. Configure the provider credentials, endpoints, and network access, then test the integration in your environment before enabling it.

Reference
secret-ref-mssql-role
Custody
customer_vault
Injection
header (Authorization)

Configure the value and injection format specified in the package. Assign responsibility for credential rotation and revocation, restrict provider permissions, and keep credential material out of logs and responses.

Complete credential requirements

A dedicated least-privilege Microsoft SQL Server login held in the client's own secret manager. The adapter reads the material as strict JSON with exactly user and password, presents it only during the TLS-protected login and never interpolates it into a statement. A result that echoes the password is refused. Windows, NTLM, Kerberos, Entra and certificate authentication are not covered.

Resources

  • mssql-table (table, pii): sqlserver://DB_HOST:1433/DB_NAME/TABLE_NAME

Technical package and review record

Complete provider requirements and exclusions

Draft awaiting owner review. Select the SQL Server adapter with native_executors.sql.engine set to sqlserver; every SQL capability in that deployment must then use a sqlserver:// endpoint, and a registration for another engine is refused when the configuration loads. The adapter (aaes/internal/connectors/native_sqlserver.go, microsoft/go-mssqldb v1.11.2, reviewed in ADR-046) connects only to the registered host, port and database. The URL path is the database, never an instance name: the adapter does not query the SQL Server Browser, so a named instance must be registered by its fixed port. It resolves the host through the connectors' pinned egress dial, and its dialer refuses any other host or port, so a routing redirect from an availability group listener or a failover partner cannot move the connection. It requires encryption with TLS 1.2 or later and the certificate verified against the registered host name, and refuses a server that declines encryption before LOGIN7, which carries the password. It uses SQL authentication only; a login name containing a backslash is refused because the driver would switch to NTLM. Statements must match the deployment allowlist byte for byte and must start with SELECT, INSERT, UPDATE, DELETE, MERGE or WITH. A T-SQL batch needs no semicolon between statements, so EXEC, EXECUTE, any sp_ or xp_ procedure, OPENQUERY, OPENROWSET, OPENDATASOURCE, BULK, WAITFOR and the DDL, permission, transaction and administrative keywords are refused anywhere in a statement.

SQL Server has no session read-only setting that the adapter could use. A query capability runs inside a transaction that is always rolled back, so a write that reaches the server is undone; sequence values, identity increments and other non-transactional effects are not undone. The adapter does not set ApplicationIntent=ReadOnly. That intent does not make a primary replica or a standalone server read-only. It only matters in an availability group: through a listener it asks for a read-only routing redirect, which the adapter refuses; a primary set to ALLOW_CONNECTIONS = READ_WRITE rejects it; and a secondary set to ALLOW_CONNECTIONS = READ_ONLY admits only read-intent connections, so the adapter cannot reach such a secondary. A secondary set to ALL accepts the adapter and serves its databases for read access only. Read-only therefore rests on the login's grants and the statement checks, with the rollback as a backstop. The adapter was tested against SQL Server 2022.

DB_HOST, DB_NAME and TABLE_NAME are placeholders. Microsoft SQL Server listens on TCP 1433 by default (a default instance uses TCP 1433, while named instances use dynamic ports unless an administrator fixes one); substitute the real host, port and database in the endpoint, the egress allowlist and the resource locator together.

Read operations are registered at R0, inserts and updates at R2, and deletion at R3. On supported execution paths mediated by AAES Govern, delete requires approval by an authorized person; bypass and observation-only paths are outside that guarantee. The SQL connector's method vocabulary is query or exec, not HTTP methods. A capability named row.insert is a promise about the statement the deployment allowlist will permit, not a check this file makes. Every capability touches one table resource classified pii as a starting point; a deployment whose table holds no personal data may lower it, and one holding payment or health data must raise it.

Least privilege lives in the database, not in this pack: db_datareader grants SELECT on the whole database and db_datawriter grants INSERT, UPDATE and DELETE on the whole database, which is broader than one table; prefer object-level GRANT SELECT, INSERT, UPDATE or DELETE on the one table for the capabilities you enable. Review the login's grants and the statement allowlist before enabling any write.

AAES has not been certified by the database vendor; the endpoints here are configuration to review and test, and the vendor has not endorsed it.

Download the complete package JSON for exact network allowlists, credential requirements, exclusions, and setup notes. Read these requirements before installation.

The full documentation review record is supplied in the evaluation package. The evaluation package runs in your environment and comes only with the paid design partnership. This page reproduces the source links and review block; the full record is available for evaluation. Discuss a design partnership to inspect it before installation.

Review block

This section reproduces the review block recorded in the pack file. The evidence and approval record is separate: for a reviewed pack, it is in the evaluation materials and in the release binary's embedded assets.

Review in progress; record dated 2026-10-29

5 sources, retrieved 2026-10-29

Current documentation links are navigation aids. They do not change the package, its historical sources or its review date. Review dates describe a documentation review, not a live integration test. No package is provider-endorsed or yet tested against a live provider tenant.

Release identity

SHA-256 of the pack file bytes: 942a4a44bf2d0d3dc8f2b5dd1713e97f2ba71a97ef54990ab1093e6ff2281b14

Not part of the reviewed release library. Editing a package changes its release identity. A deployment plan checks its own file digests; it does not restore reviewed status or authenticate approval.