|
| 1 | +# Security Policy |
| 2 | + |
| 3 | +## Table of Contents |
| 4 | + |
| 5 | +- [Security Policy](#security-policy) |
| 6 | + - [Table of Contents](#table-of-contents) |
| 7 | + - [Supported Versions](#supported-versions) |
| 8 | + - [Reporting a Vulnerability](#reporting-a-vulnerability) |
| 9 | + - [1. Do NOT create a public issue](#1-do-not-create-a-public-issue) |
| 10 | + - [2. Report privately](#2-report-privately) |
| 11 | + - [3. Include detailed information](#3-include-detailed-information) |
| 12 | + - [4. Response timeline](#4-response-timeline) |
| 13 | + - [Security Best Practices](#security-best-practices) |
| 14 | + - [API Key Security](#api-key-security) |
| 15 | + - [Environment Configuration](#environment-configuration) |
| 16 | + - [Network Security](#network-security) |
| 17 | + - [Data Protection](#data-protection) |
| 18 | + - [Known Security Considerations](#known-security-considerations) |
| 19 | + - [SSE Server](#sse-server) |
| 20 | + - [MetricFlow Integration](#metricflow-integration) |
| 21 | + - [Dependencies](#dependencies) |
| 22 | + - [Security Updates](#security-updates) |
| 23 | + - [How we handle security updates](#how-we-handle-security-updates) |
| 24 | + - [Staying informed](#staying-informed) |
| 25 | + - [Responsible Disclosure](#responsible-disclosure) |
| 26 | + - [Hall of Fame](#hall-of-fame) |
| 27 | + |
| 28 | +## Supported Versions |
| 29 | + |
| 30 | +We actively support security updates for the following versions of `mcp-metricflow`: |
| 31 | + |
| 32 | +| Version | Supported | |
| 33 | +| ------- | ------------------ | |
| 34 | +| Latest | :white_check_mark: | |
| 35 | +| < Latest| :x: | |
| 36 | + |
| 37 | +We recommend always using the latest version to ensure you have the most recent security updates. |
| 38 | + |
| 39 | +## Reporting a Vulnerability |
| 40 | + |
| 41 | +We take security vulnerabilities seriously. If you discover a security vulnerability, please follow these steps: |
| 42 | + |
| 43 | +### 1. Do NOT create a public issue |
| 44 | + |
| 45 | +Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests. |
| 46 | + |
| 47 | +### 2. Report privately |
| 48 | + |
| 49 | +Instead, please report the vulnerability by: |
| 50 | + |
| 51 | +- **Email **: Send details to [[email protected]](mailto:[email protected]) |
| 52 | +- **Subject Line**: Include "SECURITY VULNERABILITY - mcp-metricflow" in the subject |
| 53 | +- **GitHub Security Advisories**: Use GitHub's private vulnerability reporting feature (preferred) |
| 54 | + |
| 55 | +### 3. Include detailed information |
| 56 | + |
| 57 | +Please include as much information as possible: |
| 58 | + |
| 59 | +- Type of vulnerability (e.g., authentication bypass, code injection, etc.) |
| 60 | +- Step-by-step instructions to reproduce the issue |
| 61 | +- Potential impact and attack scenarios |
| 62 | +- Any suggested fixes or mitigations |
| 63 | +- Your contact information for follow-up questions |
| 64 | + |
| 65 | +### 4. Response timeline |
| 66 | + |
| 67 | +We will acknowledge receipt of your vulnerability report within **48 hours** and provide a more detailed response within **7 days** indicating the next steps in handling your report. |
| 68 | + |
| 69 | +## Security Best Practices |
| 70 | + |
| 71 | +When using `mcp-metricflow`, please follow these security best practices: |
| 72 | + |
| 73 | +### API Key Security |
| 74 | +- **Never commit API keys** to version control |
| 75 | +- **Use environment variables** for sensitive configuration |
| 76 | +- **Rotate API keys regularly** |
| 77 | +- **Use strong, unique API keys** for production environments |
| 78 | +- **Limit API key permissions** to the minimum required scope |
| 79 | + |
| 80 | +### Environment Configuration |
| 81 | +- **Secure your `.env` files** and never commit them to version control |
| 82 | +- **Use different API keys** for development, staging, and production |
| 83 | +- **Implement proper access controls** for your dbt projects and data warehouse |
| 84 | +- **Regularly audit your environment variables** and remove unused keys |
| 85 | + |
| 86 | +### Network Security |
| 87 | +- **Use HTTPS** for all SSE server communications |
| 88 | +- **Implement proper firewall rules** when exposing the SSE server |
| 89 | +- **Consider using a reverse proxy** with additional security features |
| 90 | +- **Monitor server logs** for suspicious activity |
| 91 | + |
| 92 | +### Data Protection |
| 93 | +- **Validate all inputs** to MetricFlow commands |
| 94 | +- **Implement proper authentication** for SSE mode when required |
| 95 | +- **Use least privilege principles** for database connections |
| 96 | +- **Regular security audits** of your dbt project permissions |
| 97 | + |
| 98 | +## Known Security Considerations |
| 99 | + |
| 100 | +### SSE Server |
| 101 | +- The SSE server can be run with or without authentication |
| 102 | +- When `MCP_REQUIRE_AUTH=false`, the server accepts all connections |
| 103 | +- API keys are transmitted in HTTP headers - ensure HTTPS is used |
| 104 | +- The `/health` endpoint is always accessible without authentication |
| 105 | + |
| 106 | +### MetricFlow Integration |
| 107 | +- Commands are executed with the permissions of the running user |
| 108 | +- Database credentials are inherited from dbt profiles |
| 109 | +- Query results may contain sensitive business data |
| 110 | + |
| 111 | +### Dependencies |
| 112 | +- Regular dependency updates are performed to address security vulnerabilities |
| 113 | +- We use `bandit` for static security analysis |
| 114 | +- Pre-commit hooks help prevent common security issues |
| 115 | + |
| 116 | +## Security Updates |
| 117 | + |
| 118 | +### How we handle security updates |
| 119 | + |
| 120 | +1. **Assessment**: We evaluate the severity and impact of reported vulnerabilities |
| 121 | +2. **Development**: We develop and test fixes in private repositories |
| 122 | +3. **Coordination**: For significant vulnerabilities, we may coordinate with other projects |
| 123 | +4. **Release**: We release security updates as quickly as possible |
| 124 | +5. **Disclosure**: We publish security advisories after fixes are available |
| 125 | + |
| 126 | +### Staying informed |
| 127 | + |
| 128 | +- **Watch this repository** to receive notifications about security updates |
| 129 | +- **Check releases regularly** for security-related updates |
| 130 | +- **Subscribe to our security advisories** through GitHub |
| 131 | + |
| 132 | +## Responsible Disclosure |
| 133 | + |
| 134 | +We follow responsible disclosure practices: |
| 135 | + |
| 136 | +- **Coordination**: We work with security researchers to understand and fix vulnerabilities |
| 137 | +- **Timeline**: We aim to fix critical vulnerabilities within 30 days |
| 138 | +- **Credit**: We provide appropriate credit to security researchers (with their permission) |
| 139 | +- **Transparency**: We publish security advisories for significant vulnerabilities |
| 140 | + |
| 141 | +### Hall of Fame |
| 142 | + |
| 143 | +We thank the following security researchers for their responsible disclosure: |
| 144 | + |
| 145 | +<!-- This section will be updated as we receive security reports --> |
| 146 | +*No security vulnerabilities have been reported yet.* |
| 147 | + |
| 148 | +--- |
| 149 | + |
| 150 | +Thank you for helping keep `mcp-metricflow` and the community safe! |
0 commit comments