security: remove all hardcoded API keys, require from environment

This commit is contained in:
oib
2026-02-11 21:33:18 +01:00
parent b36e5a33ea
commit 15675390ac
46 changed files with 107 additions and 107 deletions

View File

@@ -2,9 +2,9 @@ APP_ENV=dev
APP_HOST=127.0.0.1
APP_PORT=8011
DATABASE_URL=sqlite:///./coordinator.db
CLIENT_API_KEYS=REDACTED_CLIENT_KEY,client_dev_key_2
MINER_API_KEYS=REDACTED_MINER_KEY,miner_dev_key_2
ADMIN_API_KEYS=REDACTED_ADMIN_KEY
CLIENT_API_KEYS=${CLIENT_API_KEY},client_dev_key_2
MINER_API_KEYS=${MINER_API_KEY},miner_dev_key_2
ADMIN_API_KEYS=${ADMIN_API_KEY}
HMAC_SECRET=change_me
ALLOW_ORIGINS=*
JOB_TTL_SECONDS=900

View File

@@ -11,9 +11,9 @@ class Settings(BaseSettings):
database_url: str = "sqlite:///./coordinator.db"
client_api_keys: List[str] = ["REDACTED_CLIENT_KEY"]
miner_api_keys: List[str] = ["REDACTED_MINER_KEY"]
admin_api_keys: List[str] = ["REDACTED_ADMIN_KEY"]
client_api_keys: List[str] = []
miner_api_keys: List[str] = []
admin_api_keys: List[str] = []
hmac_secret: Optional[str] = None
allow_origins: List[str] = ["*"]

View File

@@ -26,7 +26,7 @@ def test_receipt_endpoint_returns_signed_receipt(test_client: TestClient):
resp = test_client.post(
"/v1/miners/register",
json={"capabilities": {"price": 1}, "concurrency": 1},
headers={"X-Api-Key": "REDACTED_MINER_KEY"},
headers={"X-Api-Key": "${MINER_API_KEY}"},
)
assert resp.status_code == 200
@@ -37,7 +37,7 @@ def test_receipt_endpoint_returns_signed_receipt(test_client: TestClient):
resp = test_client.post(
"/v1/jobs",
json=job_payload,
headers={"X-Api-Key": "REDACTED_CLIENT_KEY"},
headers={"X-Api-Key": "${CLIENT_API_KEY}"},
)
assert resp.status_code == 201
job_id = resp.json()["job_id"]
@@ -46,7 +46,7 @@ def test_receipt_endpoint_returns_signed_receipt(test_client: TestClient):
poll_resp = test_client.post(
"/v1/miners/poll",
json={"max_wait_seconds": 1},
headers={"X-Api-Key": "REDACTED_MINER_KEY"},
headers={"X-Api-Key": "${MINER_API_KEY}"},
)
assert poll_resp.status_code in (200, 204)
@@ -58,7 +58,7 @@ def test_receipt_endpoint_returns_signed_receipt(test_client: TestClient):
result_resp = test_client.post(
f"/v1/miners/{job_id}/result",
json=result_payload,
headers={"X-Api-Key": "REDACTED_MINER_KEY"},
headers={"X-Api-Key": "${MINER_API_KEY}"},
)
assert result_resp.status_code == 200
signed_receipt = result_resp.json()["receipt"]
@@ -67,7 +67,7 @@ def test_receipt_endpoint_returns_signed_receipt(test_client: TestClient):
# fetch receipt via client endpoint
receipt_resp = test_client.get(
f"/v1/jobs/{job_id}/receipt",
headers={"X-Api-Key": "REDACTED_CLIENT_KEY"},
headers={"X-Api-Key": "${CLIENT_API_KEY}"},
)
assert receipt_resp.status_code == 200
payload = receipt_resp.json()

View File

@@ -812,7 +812,7 @@
// Display demo offers
displayGPUOffers([{
id: '1',
provider: 'REDACTED_MINER_KEY',
provider: '${MINER_API_KEY}',
capacity: 1,
price: 50,
attributes: {

View File

@@ -13,7 +13,7 @@ class Settings(BaseSettings):
debug: bool = Field(default=False)
coordinator_base_url: str = Field(default="http://localhost:8011", alias="COORDINATOR_BASE_URL")
coordinator_api_key: str = Field(default="REDACTED_CLIENT_KEY", alias="COORDINATOR_API_KEY")
coordinator_api_key: str = Field(default="${CLIENT_API_KEY}", alias="COORDINATOR_API_KEY")
rest_prefix: str = Field(default="/v1", alias="REST_PREFIX")
ledger_db_path: Path = Field(default=Path("./data/wallet_ledger.db"), alias="LEDGER_DB_PATH")