{"data":{"skill":{"slug":"sickn33-azure-resource-manager-postgresql-dotnet","name":"azure-resource-manager-postgresql-dotnet","icon":"📦","repo":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-resource-manager-postgresql-dotnet","status":"approved","author":"sickn33","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"c7903409-6b80-44f9-9399-b06363255c03","skill_id":"16888041-fefd-48de-a69a-be0d0849dc79","version":5,"content_hash":"v3:f9e2c34b4f19c7f3e6b0a1e93227b5f77cc12526:ed1dc512b39b6bdeb507bca6739005bc476d8aecb1b16fbd0407981eedb20537:27bc427f2295f367941b7eb8aea0d880da227ff447ed91984cfeb8063d68461e:736b696c6c732f7369636b6e33332f617a7572652d7265736f757263652d6d616e616765722d706f737467726573716c2d646f746e6574:d40eb60be164166c129d358d405968f0","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"Most static alerts are false positives caused by Markdown fences, inline code, official documentation URLs, and example private addresses. The 0.0.0.0 firewall example is a confirmed medium risk because it enables broad Azure-services access. A separate medium finding covers a hardcoded password example and disabled certificate validation.","remediation":[{"issue":"The firewall example enables access from Azure services through the special 0.0.0.0 rule.","severity":"medium","suggestion":"Replace it with private networking or narrowly scoped client ranges, and explain the cross-tenant exposure created by this Azure setting."},{"issue":"The password connection example embeds a credential and sets Trust Server Certificate to true.","severity":"medium","suggestion":"Load credentials from a secret provider and require normal TLS certificate validation in the default example."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":18,"line_start":15},{"file":"SKILL.md","line_end":27,"line_start":18},{"file":"SKILL.md","line_end":31,"line_start":27},{"file":"SKILL.md","line_end":35,"line_start":31},{"file":"SKILL.md","line_end":42,"line_start":35},{"file":"SKILL.md","line_end":46,"line_start":42},{"file":"SKILL.md","line_end":56,"line_start":46},{"file":"SKILL.md","line_end":62,"line_start":56},{"file":"SKILL.md","line_end":109,"line_start":62},{"file":"SKILL.md","line_end":113,"line_start":109},{"file":"SKILL.md","line_end":130,"line_start":113},{"file":"SKILL.md","line_end":134,"line_start":130},{"file":"SKILL.md","line_end":155,"line_start":134},{"file":"SKILL.md","line_end":159,"line_start":155},{"file":"SKILL.md","line_end":185,"line_start":159},{"file":"SKILL.md","line_end":189,"line_start":185},{"file":"SKILL.md","line_end":203,"line_start":189},{"file":"SKILL.md","line_end":207,"line_start":203},{"file":"SKILL.md","line_end":224,"line_start":207},{"file":"SKILL.md","line_end":228,"line_start":224},{"file":"SKILL.md","line_end":247,"line_start":228},{"file":"SKILL.md","line_end":251,"line_start":247},{"file":"SKILL.md","line_end":261,"line_start":251},{"file":"SKILL.md","line_end":265,"line_start":261},{"file":"SKILL.md","line_end":281,"line_start":265},{"file":"SKILL.md","line_end":285,"line_start":281},{"file":"SKILL.md","line_end":301,"line_start":285},{"file":"SKILL.md","line_end":305,"line_start":301},{"file":"SKILL.md","line_end":310,"line_start":305},{"file":"SKILL.md","line_end":316,"line_start":310},{"file":"SKILL.md","line_end":317,"line_start":316},{"file":"SKILL.md","line_end":318,"line_start":317},{"file":"SKILL.md","line_end":319,"line_start":318},{"file":"SKILL.md","line_end":320,"line_start":319},{"file":"SKILL.md","line_end":321,"line_start":320},{"file":"SKILL.md","line_end":322,"line_start":321},{"file":"SKILL.md","line_end":323,"line_start":322},{"file":"SKILL.md","line_end":324,"line_start":323},{"file":"SKILL.md","line_end":325,"line_start":324},{"file":"SKILL.md","line_end":326,"line_start":325},{"file":"SKILL.md","line_end":327,"line_start":326},{"file":"SKILL.md","line_end":328,"line_start":327},{"file":"SKILL.md","line_end":334,"line_start":328},{"file":"SKILL.md","line_end":335,"line_start":334},{"file":"SKILL.md","line_end":336,"line_start":335},{"file":"SKILL.md","line_end":342,"line_start":336},{"file":"SKILL.md","line_end":343,"line_start":342},{"file":"SKILL.md","line_end":344,"line_start":343},{"file":"SKILL.md","line_end":345,"line_start":344},{"file":"SKILL.md","line_end":346,"line_start":345}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":409,"line_start":409},{"file":"SKILL.md","line_end":431,"line_start":431},{"file":"SKILL.md","line_end":432,"line_start":432},{"file":"SKILL.md","line_end":433,"line_start":433},{"file":"SKILL.md","line_end":434,"line_start":434},{"file":"SKILL.md","line_end":140,"line_start":140},{"file":"SKILL.md","line_end":141,"line_start":141},{"file":"SKILL.md","line_end":150,"line_start":150},{"file":"SKILL.md","line_end":151,"line_start":151}]},{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":409,"line_start":409}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Hardcoded IP address","locations":[{"file":"SKILL.md","line_end":150,"line_start":150}],"confidence":0.96,"description":"StartIPAddress = System.Net.IPAddress.Parse(\"0.0.0.0\"),","review_kind":"capability","source_category":"network","source_severity":"medium","confidence_reasoning":"In Azure PostgreSQL, the special 0.0.0.0 rule enables connections from Azure services. Copying this example creates broader access than a private or client-specific rule."},{"title":"Hardcoded IP address","locations":[{"file":"SKILL.md","line_end":151,"line_start":151}],"confidence":0.96,"description":"EndIPAddress = System.Net.IPAddress.Parse(\"0.0.0.0\")","review_kind":"capability","source_category":"network","source_severity":"medium","confidence_reasoning":"This line completes the special 0.0.0.0 firewall range that permits Azure-services access. The broad rule increases exposure if copied without additional controls."},{"title":"Insecure Password Connection Example","locations":[{"file":"SKILL.md","line_end":405,"line_start":398}],"confidence":0.99,"description":"The connection example embeds a password and enables Trust Server Certificate. Copying it can expose credentials and bypass TLS certificate validation.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The example directly contains a password literal and Trust Server Certificate=true. Both insecure settings are visible in the documented connection string."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":443,"audit_model":"codex","audited_at":"2026-07-23T22:30:16.992+00:00","created_at":"2026-07-26T06:21:57.472755+00:00","static_findings":[{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":18,"severity":"medium","line_start":15},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":27,"severity":"medium","line_start":18},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":31,"severity":"medium","line_start":27},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":35,"severity":"medium","line_start":31},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":42,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":46,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":56,"severity":"medium","line_start":46},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":62,"severity":"medium","line_start":56},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":109,"severity":"medium","line_start":62},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":113,"severity":"medium","line_start":109},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":130,"severity":"medium","line_start":113},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":134,"severity":"medium","line_start":130},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":155,"severity":"medium","line_start":134},{"id":"external_commands:SKILL.md:155:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":159,"severity":"medium","line_start":155},{"id":"external_commands:SKILL.md:159:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":185,"severity":"medium","line_start":159},{"id":"external_commands:SKILL.md:185:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":189,"severity":"medium","line_start":185},{"id":"external_commands:SKILL.md:189:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":203,"severity":"medium","line_start":189},{"id":"external_commands:SKILL.md:203:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":207,"severity":"medium","line_start":203},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":224,"severity":"medium","line_start":207},{"id":"external_commands:SKILL.md:224:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":228,"severity":"medium","line_start":224},{"id":"external_commands:SKILL.md:228:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":247,"severity":"medium","line_start":228},{"id":"external_commands:SKILL.md:247:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":251,"severity":"medium","line_start":247},{"id":"external_commands:SKILL.md:251:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":261,"severity":"medium","line_start":251},{"id":"external_commands:SKILL.md:261:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":265,"severity":"medium","line_start":261},{"id":"external_commands:SKILL.md:265:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":281,"severity":"medium","line_start":265},{"id":"external_commands:SKILL.md:281:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":285,"severity":"medium","line_start":281},{"id":"external_commands:SKILL.md:285:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":301,"severity":"medium","line_start":285},{"id":"external_commands:SKILL.md:301:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":305,"severity":"medium","line_start":301},{"id":"external_commands:SKILL.md:305:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":310,"severity":"medium","line_start":305},{"id":"external_commands:SKILL.md:310:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":316,"severity":"medium","line_start":310},{"id":"external_commands:SKILL.md:316:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PostgreSqlFlexibleServerResource` | Flexible Server instance |","category":"external_commands","line_end":317,"severity":"medium","line_start":316},{"id":"external_commands:SKILL.md:317:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PostgreSqlFlexibleServerData` | Server configuration data |","category":"external_commands","line_end":318,"severity":"medium","line_start":317},{"id":"external_commands:SKILL.md:318:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PostgreSqlFlexibleServerCollection` | Collection of servers |","category":"external_commands","line_end":319,"severity":"medium","line_start":318},{"id":"external_commands:SKILL.md:319:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PostgreSqlFlexibleServerDatabaseResource` | Database within server |","category":"external_commands","line_end":320,"severity":"medium","line_start":319},{"id":"external_commands:SKILL.md:320:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PostgreSqlFlexibleServerFirewallRuleResource` | IP firewall rule |","category":"external_commands","line_end":321,"severity":"medium","line_start":320},{"id":"external_commands:SKILL.md:321:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PostgreSqlFlexibleServerConfigurationResource` | Server parameter |","category":"external_commands","line_end":322,"severity":"medium","line_start":321},{"id":"external_commands:SKILL.md:322:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PostgreSqlFlexibleServerBackupResource` | Backup metadata |","category":"external_commands","line_end":323,"severity":"medium","line_start":322},{"id":"external_commands:SKILL.md:323:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PostgreSqlFlexibleServerActiveDirectoryAdministratorResource` | Entra ID admin |","category":"external_commands","line_end":324,"severity":"medium","line_start":323},{"id":"external_commands:SKILL.md:324:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PostgreSqlFlexibleServerSku` | SKU (compute tier + size) |","category":"external_commands","line_end":325,"severity":"medium","line_start":324},{"id":"external_commands:SKILL.md:325:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PostgreSqlFlexibleServerStorage` | Storage configuration |","category":"external_commands","line_end":326,"severity":"medium","line_start":325},{"id":"external_commands:SKILL.md:326:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PostgreSqlFlexibleServerHighAvailability` | HA configuration |","category":"external_commands","line_end":327,"severity":"medium","line_start":326},{"id":"external_commands:SKILL.md:327:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PostgreSqlFlexibleServerBackupProperties` | Backup settings |","category":"external_commands","line_end":328,"severity":"medium","line_start":327},{"id":"external_commands:SKILL.md:328:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PostgreSqlFlexibleServerAuthConfig` | Authentication settings |","category":"external_commands","line_end":334,"severity":"medium","line_start":328},{"id":"external_commands:SKILL.md:334:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `Burstable` | Dev/test, light workloads | Standard_B1ms, Standard_B2s |","category":"external_commands","line_end":335,"severity":"medium","line_start":334},{"id":"external_commands:SKILL.md:335:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `GeneralPurpose` | Production workloads | Standard_D2ds_v4, Standard_D4ds_v4 |","category":"external_commands","line_end":336,"severity":"medium","line_start":335},{"id":"external_commands:SKILL.md:336:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `MemoryOptimized` | High memory requirements | Standard_E2ds_v4, Standard_E4ds_v4 |","category":"external_commands","line_end":342,"severity":"medium","line_start":336},{"id":"external_commands:SKILL.md:342:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| PostgreSQL 11 | `Ver11` |","category":"external_commands","line_end":343,"severity":"medium","line_start":342},{"id":"external_commands:SKILL.md:343:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| PostgreSQL 12 | `Ver12` |","category":"external_commands","line_end":344,"severity":"medium","line_start":343},{"id":"external_commands:SKILL.md:344:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| PostgreSQL 13 | `Ver13` |","category":"external_commands","line_end":345,"severity":"medium","line_start":344},{"id":"external_commands:SKILL.md:345:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| PostgreSQL 14 | `Ver14` |","category":"external_commands","line_end":346,"severity":"medium","line_start":345},{"id":"external_commands:SKILL.md:346:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| PostgreSQL 15 | `Ver15` |","category":"external_commands","line_end":347,"severity":"medium","line_start":346},{"id":"external_commands:SKILL.md:347:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| PostgreSQL 16 | `Ver16` |","category":"external_commands","line_end":353,"severity":"medium","line_start":347},{"id":"external_commands:SKILL.md:353:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `Disabled` | No HA (single server) |","category":"external_commands","line_end":354,"severity":"medium","line_start":353},{"id":"external_commands:SKILL.md:354:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `SameZone` | HA within same availability zone |","category":"external_commands","line_end":355,"severity":"medium","line_start":354},{"id":"external_commands:SKILL.md:355:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `ZoneRedundant` | HA across availability zones |","category":"external_commands","line_end":372,"severity":"medium","line_start":355},{"id":"external_commands:SKILL.md:372:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":392,"severity":"medium","line_start":372},{"id":"external_commands:SKILL.md:392:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":398,"severity":"medium","line_start":392},{"id":"external_commands:SKILL.md:398:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":416,"severity":"medium","line_start":398},{"id":"external_commands:SKILL.md:416:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":422,"severity":"medium","line_start":416},{"id":"external_commands:SKILL.md:422:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `Azure.ResourceManager.PostgreSql` | PostgreSQL management (this SDK) | `dotnet add package Azure.","category":"external_commands","line_end":422,"severity":"medium","line_start":422},{"id":"external_commands:SKILL.md:423:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `Azure.ResourceManager.MySql` | MySQL management | `dotnet add package Azure.ResourceManager.MySql","category":"external_commands","line_end":423,"severity":"medium","line_start":423},{"id":"external_commands:SKILL.md:424:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `Npgsql` | PostgreSQL data access | `dotnet add package Npgsql` |","category":"external_commands","line_end":424,"severity":"medium","line_start":424},{"id":"external_commands:SKILL.md:425:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `Npgsql.EntityFrameworkCore.PostgreSQL` | EF Core provider | `dotnet add package Npgsql.EntityFram","category":"external_commands","line_end":425,"severity":"medium","line_start":425},{"id":"network:SKILL.md:409:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"new TokenRequestContext(new[] { \"https://ossrdbms-aad.database.windows.net/.default\" }));","category":"network","line_end":409,"severity":"low","line_start":409},{"id":"network:SKILL.md:431:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"| NuGet Package | https://www.nuget.org/packages/Azure.ResourceManager.PostgreSql |","category":"network","line_end":431,"severity":"low","line_start":431},{"id":"network:SKILL.md:432:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"| API Reference | https://learn.microsoft.com/dotnet/api/azure.resourcemanager.postgresql |","category":"network","line_end":432,"severity":"low","line_start":432},{"id":"network:SKILL.md:433:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"| Product Documentation | https://learn.microsoft.com/azure/postgresql/flexible-server/ |","category":"network","line_end":433,"severity":"low","line_start":433},{"id":"network:SKILL.md:434:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"| GitHub Source | https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/postgresql/Azure.Resource","category":"network","line_end":434,"severity":"low","line_start":434},{"id":"network:SKILL.md:140:hardcoded-ip-address","file":"SKILL.md","pattern":"Hardcoded IP address","snippet":"StartIPAddress = System.Net.IPAddress.Parse(\"10.0.0.1\"),","category":"network","line_end":140,"severity":"medium","line_start":140},{"id":"network:SKILL.md:141:hardcoded-ip-address","file":"SKILL.md","pattern":"Hardcoded IP address","snippet":"EndIPAddress = System.Net.IPAddress.Parse(\"10.0.0.255\")","category":"network","line_end":141,"severity":"medium","line_start":141},{"id":"network:SKILL.md:150:hardcoded-ip-address","file":"SKILL.md","pattern":"Hardcoded IP address","snippet":"StartIPAddress = System.Net.IPAddress.Parse(\"0.0.0.0\"),","category":"network","line_end":150,"severity":"medium","line_start":150},{"id":"network:SKILL.md:151:hardcoded-ip-address","file":"SKILL.md","pattern":"Hardcoded IP address","snippet":"EndIPAddress = System.Net.IPAddress.Parse(\"0.0.0.0\")","category":"network","line_end":151,"severity":"medium","line_start":151},{"id":"filesystem:SKILL.md:409:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"new TokenRequestContext(new[] { \"https://ossrdbms-aad.database.windows.net/.default\" }));","category":"filesystem","line_end":409,"severity":"medium","line_start":409},{"id":"blocker:SKILL.md:386:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"Console.WriteLine($\"Invalid configuration: {ex.Message}\");","category":"blocker","line_end":386,"severity":"low","line_start":386}],"finding_verdicts":[{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","reason":"The token is a Markdown fence around documented dotnet package installation. It is not Ruby or shell backtick execution, and the package names are fixed.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","reason":"This line is the closing delimiter of a Markdown command example. It does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","reason":"The token opens a Markdown block containing environment-variable placeholders. It is documentation, not backtick command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"This line closes a Markdown example and has no executable behavior.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"This is a C# Markdown fence introducing an authentication example. It is not shell backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"This is only the closing delimiter for a C# Markdown block.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","reason":"This Markdown delimiter opens a text diagram of the Azure resource hierarchy. No command is invoked.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","reason":"This line closes the resource hierarchy diagram and cannot execute code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","reason":"This is a C# Markdown fence for a server creation example, not a shell execution construct.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","reason":"This line is a Markdown closing fence with no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","reason":"This token opens a C# database example in Markdown. It does not invoke a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","reason":"This is the closing fence for a documented C# example.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","reason":"This is a C# Markdown fence around firewall configuration documentation, not backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:155:ruby-shell-backtick-execution","reason":"This line only closes the C# Markdown block.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:159:ruby-shell-backtick-execution","reason":"This token opens a documented C# configuration example. It is not an executable backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:185:ruby-shell-backtick-execution","reason":"This is the closing delimiter for a Markdown code example.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:189:ruby-shell-backtick-execution","reason":"This Markdown fence introduces C# Entra administrator configuration. It does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:203:ruby-shell-backtick-execution","reason":"This line is a Markdown closing fence and has no command behavior.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","reason":"This is a C# Markdown fence for resource listing documentation, not shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:224:ruby-shell-backtick-execution","reason":"This token closes a C# example and is inert Markdown.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:228:ruby-shell-backtick-execution","reason":"This token opens a C# backup and restore example in Markdown. It is not a shell construct.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:247:ruby-shell-backtick-execution","reason":"This is the inert closing fence of a documented C# block.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:251:ruby-shell-backtick-execution","reason":"This is a C# Markdown fence for a replica example, not executable shell syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:261:ruby-shell-backtick-execution","reason":"This line closes a Markdown code block and cannot launch a process.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:265:ruby-shell-backtick-execution","reason":"This token opens documented C# server lifecycle calls. It is not a Ruby or shell execution operator.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:281:ruby-shell-backtick-execution","reason":"This is an inert Markdown closing fence.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:285:ruby-shell-backtick-execution","reason":"This is a C# Markdown fence for a scaling example. It does not invoke an external command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:301:ruby-shell-backtick-execution","reason":"This token only closes the C# example.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:305:ruby-shell-backtick-execution","reason":"This is a Markdown fence around a C# deletion example, not shell backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:310:ruby-shell-backtick-execution","reason":"This line is the closing Markdown fence for the deletion example.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:316:ruby-shell-backtick-execution","reason":"The backticks format a .NET type name inside a Markdown table. They do not execute anything.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:317:ruby-shell-backtick-execution","reason":"The backticks are inline Markdown formatting around a .NET type name.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:318:ruby-shell-backtick-execution","reason":"This table row uses inline code formatting and contains no executable construct.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:319:ruby-shell-backtick-execution","reason":"The detector matched Markdown formatting around a documented .NET type.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:320:ruby-shell-backtick-execution","reason":"This is an inline-formatted .NET type in a Markdown reference table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:321:ruby-shell-backtick-execution","reason":"The backticks only format a .NET configuration resource type.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:322:ruby-shell-backtick-execution","reason":"This table cell contains inline Markdown code formatting, not command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:323:ruby-shell-backtick-execution","reason":"The matched backticks format a .NET type name in documentation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:324:ruby-shell-backtick-execution","reason":"This is inline code formatting for a documented SKU type.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:325:ruby-shell-backtick-execution","reason":"The backticks mark a .NET storage type in a Markdown table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:326:ruby-shell-backtick-execution","reason":"This table row uses inline formatting around a .NET high-availability type.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:327:ruby-shell-backtick-execution","reason":"The matched text is a formatted type name in documentation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:328:ruby-shell-backtick-execution","reason":"This is Markdown inline code around an authentication configuration type.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:334:ruby-shell-backtick-execution","reason":"The backticks format a SKU tier name in a Markdown table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:335:ruby-shell-backtick-execution","reason":"This is inline formatting for a SKU tier, with no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:336:ruby-shell-backtick-execution","reason":"The detector matched Markdown code formatting around a SKU tier name.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:342:ruby-shell-backtick-execution","reason":"The backticks format a PostgreSQL version enum in a reference table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:343:ruby-shell-backtick-execution","reason":"This is inline Markdown formatting around a version enum.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:344:ruby-shell-backtick-execution","reason":"The matched token is a formatted enum value in documentation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:345:ruby-shell-backtick-execution","reason":"This table row contains only inline formatting around a version enum.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:346:ruby-shell-backtick-execution","reason":"The backticks denote an enum name in Markdown and cannot run a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:347:ruby-shell-backtick-execution","reason":"This is inline Markdown code around a PostgreSQL version enum.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:353:ruby-shell-backtick-execution","reason":"The backticks format a high-availability mode in a table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:354:ruby-shell-backtick-execution","reason":"This is inline formatting for a documented availability mode.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:355:ruby-shell-backtick-execution","reason":"The matched token is a formatted availability mode, not an execution operator.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:372:ruby-shell-backtick-execution","reason":"This is a C# Markdown fence introducing error-handling documentation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:392:ruby-shell-backtick-execution","reason":"This line only closes a C# Markdown example.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:398:ruby-shell-backtick-execution","reason":"This is a C# Markdown fence for connection examples, not a shell backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:416:ruby-shell-backtick-execution","reason":"This is the inert closing fence for a C# example.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:422:ruby-shell-backtick-execution","reason":"The package command is displayed as inline Markdown in a reference table. The skill file does not execute it.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:423:ruby-shell-backtick-execution","reason":"This is a fixed package installation example rendered as inline documentation, not dynamic command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:424:ruby-shell-backtick-execution","reason":"The Npgsql installation text is inline Markdown and is not executed by the skill.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:425:ruby-shell-backtick-execution","reason":"This fixed package installation text appears only in a Markdown table.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:409:hardcoded-url","reason":"The URL is Microsoft's documented Azure PostgreSQL Entra token scope. It is used for authentication and does not send data to an unrelated endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:431:hardcoded-url","reason":"This is a reference link to the official NuGet package page.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:432:hardcoded-url","reason":"This link points to the official Microsoft API reference and is inert documentation.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:433:hardcoded-url","reason":"This is an official Microsoft product documentation link, with no exfiltration behavior.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:434:hardcoded-url","reason":"This is a reference link to the official Azure SDK source repository.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:140:hardcoded-ip-address","reason":"The address is a private RFC 1918 example used to demonstrate a bounded firewall range. It is not a hidden remote endpoint.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:141:hardcoded-ip-address","reason":"The address is the end of the same private example range. It does not identify an external host.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:150:hardcoded-ip-address","reason":"In Azure PostgreSQL, the special 0.0.0.0 rule enables connections from Azure services. Copying this example creates broader access than a private or client-specific rule.","verdict":"confirmed","severity":"medium","confidence":0.96},{"id":"network:SKILL.md:151:hardcoded-ip-address","reason":"This line completes the special 0.0.0.0 firewall range that permits Azure-services access. The broad rule increases exposure if copied without additional controls.","verdict":"confirmed","severity":"medium","confidence":0.96},{"id":"filesystem:SKILL.md:409:hidden-file-access","reason":"The .default suffix is part of an Azure OAuth scope URL. No hidden filesystem path is read or modified.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:386:system-reconnaissance","reason":"The code prints an Azure exception message for error handling. It does not collect host, network, account, or environment reconnaissance data.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Insecure Password Connection Example","severity":"medium","locations":[{"file":"SKILL.md","line_end":405,"line_start":398}],"confidence":0.99,"description":"The connection example embeds a password and enables Trust Server Certificate. Copying it can expose credentials and bypass TLS certificate validation.","confidence_reasoning":"The example directly contains a password literal and Trust Server Certificate=true. Both insecure settings are visible in the documented connection string."}],"subject_marketplace_commit_sha":"f9e2c34b4f19c7f3e6b0a1e93227b5f77cc12526","subject_content_hash":"ed1dc512b39b6bdeb507bca6739005bc476d8aecb1b16fbd0407981eedb20537","subject_tree_hash":"27bc427f2295f367941b7eb8aea0d880da227ff447ed91984cfeb8063d68461e","subject_plugin_path":"skills/sickn33/azure-resource-manager-postgresql-dotnet","audit_payload_hash":"d40eb60be164166c129d358d405968f0","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"f9e2c34b4f19c7f3e6b0a1e93227b5f77cc12526","contentHash":"ed1dc512b39b6bdeb507bca6739005bc476d8aecb1b16fbd0407981eedb20537","treeHash":"27bc427f2295f367941b7eb8aea0d880da227ff447ed91984cfeb8063d68461e","pluginPath":"skills/sickn33/azure-resource-manager-postgresql-dotnet","auditPayloadHash":"d40eb60be164166c129d358d405968f0"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/sickn33-azure-resource-manager-postgresql-dotnet/audits/5/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":1,"capabilityReviewCount":2,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}