{
  "format": "agent-article-v0",
  "article_id": "EA-174",
  "canonical_url": "/tools/ea-174-mlflow-tracking-tracing-registry-artifact-access",
  "page_type": "reference",
  "claim_ids": [],
  "evidence_ids": [
    "EVD-EA-174-URL-A6628BCADD70",
    "EVD-EA-174-URL-622AF387AB5A",
    "EVD-EA-174-URL-6EEC54C34BD9",
    "EVD-EA-174-URL-3FE81E335E19",
    "EVD-EA-174-URL-CBBC07258943",
    "EVD-EA-174-URL-171CFFE4F083",
    "EVD-EA-174-URL-BEE0BA343372",
    "EA-174-CURRENT-APPROVAL",
    "EA-174-CURRENT-BODY-READBACK"
  ],
  "unknown_ids": [
    "EA-174-UNKNOWN-01"
  ],
  "operational_object_ids": [],
  "provider": [],
  "models": [],
  "plans": [],
  "surfaces": [],
  "regions": [],
  "current_status": "CURRENT",
  "observation_status": "SPEC_ONLY",
  "freshness": "CURRENT",
  "last_verified": "2026-10-22",
  "supersedes": [],
  "superseded_by": [],
  "provenance": [
    "EA174-CANDIDATE-20261022-0811JST-C1",
    "SRC-EA-174-URL-A6628BCADD70",
    "SRC-EA-174-URL-622AF387AB5A",
    "SRC-EA-174-URL-6EEC54C34BD9",
    "SRC-EA-174-URL-3FE81E335E19",
    "SRC-EA-174-URL-CBBC07258943",
    "SRC-EA-174-URL-171CFFE4F083",
    "SRC-EA-174-URL-BEE0BA343372",
    "BODY-SHA256:312833255dd27e20d5abaf5311a531adc5f45952b672d8f377e10969cc97e10b"
  ],
  "article_sources": [
    {
      "id": "EVD-EA-174-URL-A6628BCADD70",
      "evidence_class": "RESEARCH",
      "title": "https://mlflow.org/docs/latest/self-hosting/architecture/tracking-server/",
      "href": "https://mlflow.org/docs/latest/self-hosting/architecture/tracking-server/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-174-URL-A6628BCADD70"
      ],
      "supporting_locators": [
        "SOURCE_PROVENANCE",
        "https://mlflow.org/docs/latest/self-hosting/architecture/tracking-server/"
      ],
      "scope": "SOURCE_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-174-URL-622AF387AB5A",
      "evidence_class": "RESEARCH",
      "title": "https://mlflow.org/docs/latest/tracking/",
      "href": "https://mlflow.org/docs/latest/tracking/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-174-URL-622AF387AB5A"
      ],
      "supporting_locators": [
        "SOURCE_PROVENANCE",
        "https://mlflow.org/docs/latest/tracking/"
      ],
      "scope": "SOURCE_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-174-URL-6EEC54C34BD9",
      "evidence_class": "RESEARCH",
      "title": "https://mlflow.org/docs/latest/tracking/backend-stores/",
      "href": "https://mlflow.org/docs/latest/tracking/backend-stores/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-174-URL-6EEC54C34BD9"
      ],
      "supporting_locators": [
        "SOURCE_PROVENANCE",
        "https://mlflow.org/docs/latest/tracking/backend-stores/"
      ],
      "scope": "SOURCE_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-174-URL-3FE81E335E19",
      "evidence_class": "RESEARCH",
      "title": "https://mlflow.org/docs/latest/self-hosting/architecture/artifact-store/",
      "href": "https://mlflow.org/docs/latest/self-hosting/architecture/artifact-store/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-174-URL-3FE81E335E19"
      ],
      "supporting_locators": [
        "SOURCE_PROVENANCE",
        "https://mlflow.org/docs/latest/self-hosting/architecture/artifact-store/"
      ],
      "scope": "SOURCE_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-174-URL-CBBC07258943",
      "evidence_class": "RESEARCH",
      "title": "https://mlflow.org/docs/latest/self-hosting/security/basic-http-auth/",
      "href": "https://mlflow.org/docs/latest/self-hosting/security/basic-http-auth/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-174-URL-CBBC07258943"
      ],
      "supporting_locators": [
        "SOURCE_PROVENANCE",
        "https://mlflow.org/docs/latest/self-hosting/security/basic-http-auth/"
      ],
      "scope": "SOURCE_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-174-URL-171CFFE4F083",
      "evidence_class": "RESEARCH",
      "title": "https://mlflow.org/docs/latest/genai/tracing/opentelemetry/",
      "href": "https://mlflow.org/docs/latest/genai/tracing/opentelemetry/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-174-URL-171CFFE4F083"
      ],
      "supporting_locators": [
        "SOURCE_PROVENANCE",
        "https://mlflow.org/docs/latest/genai/tracing/opentelemetry/"
      ],
      "scope": "SOURCE_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-174-URL-BEE0BA343372",
      "evidence_class": "RESEARCH",
      "title": "https://mlflow.org/docs/latest/genai/tracing/opentelemetry/export/",
      "href": "https://mlflow.org/docs/latest/genai/tracing/opentelemetry/export/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-174-URL-BEE0BA343372"
      ],
      "supporting_locators": [
        "SOURCE_PROVENANCE",
        "https://mlflow.org/docs/latest/genai/tracing/opentelemetry/export/"
      ],
      "scope": "SOURCE_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EA-174-CURRENT-APPROVAL",
      "evidence_class": "RESEARCH",
      "title": "現行本文の監査・revision対応",
      "supports": [
        "現行台帳のAUDIT_PASSと候補・revision・本文ハッシュの対応を確認しています。"
      ],
      "limit": "監査状態と来歴の記録です。外部根拠の最新性や本文の全主張を追加保証しません。",
      "origin_class": "AUDITED_CANONICAL_RESEARCH_PACKET",
      "source_or_experiment_ids": [
        "EA174-CANDIDATE-20261022-0811JST-C1"
      ],
      "supporting_locators": [
        "1KqhJtiSb2S84rWmeYVwKcT_76dBwZ_B0ZZuAWQqH0rQ/EA_REVISION_LEDGER#ea_id=EA-174&revision_id=EA-174-V21-LEGACY-MIGRATION-20261003-R1&candidate_id=EA174-CANDIDATE-20261022-0811JST-C1",
        "EA-174-V21-LEGACY-MIGRATION-20261003-R1"
      ],
      "provenance_status": "CURRENT_CANONICAL_APPROVAL_READBACK"
    },
    {
      "id": "EA-174-CURRENT-BODY-READBACK",
      "evidence_class": "IMPL",
      "title": "現行本文の収録照合",
      "supports": [
        "公開生成入力の本文SHA-256が、監査済み候補に結び付いたハッシュと一致しています。"
      ],
      "limit": "本文の同一性の検査です。外部システムの挙動や全主張の真偽を実証したものではありません。",
      "checked_at": "2026-10-22",
      "origin_class": "IMPLEMENTATION_READBACK",
      "source_or_experiment_ids": [
        "BODY-SHA256:312833255dd27e20d5abaf5311a531adc5f45952b672d8f377e10969cc97e10b"
      ],
      "supporting_locators": [
        "content/staging/EA-174.md",
        "312833255dd27e20d5abaf5311a531adc5f45952b672d8f377e10969cc97e10b",
        "EA-174-V21-LEGACY-MIGRATION-20261003-R1"
      ],
      "provenance_status": "CURRENT_APPROVED_BODY_HASH_MATCH"
    }
  ],
  "research_sections": [
    {
      "heading": "現在位置",
      "text": "MLflowは、実験・runの追跡、modelやartifactの管理、Model Registry、GenAI向けTracingなどを一つの基盤で扱えるOSSのAI/ML運用基盤である。運用では「MLflow serverを置いた」こと自体を統制成立とみなさず、Tracking Server、backend store、artifact store、Model Registry、trace/telemetry、認証・認可、外部LLM/APIへの接続を別の境界として設計する。\n\n2026-10-22時点の公式documentationでは、Tracking ServerはUIとREST APIを提供し、metadataはbackend storeへ、model weightや画像・データ等の大きなartifactはartifact storeへ保存する。既定backendはSQLiteで、file-based backendは後方互換用のmaintenance modeとされている。高並行度のproduction用途ではPostgreSQL/MySQL等のDB backendを検討し、schema migration前にはbackupを取る。"
    },
    {
      "heading": "Tracking Serverと保存先の分離",
      "text": "Tracking Serverはrun/experiment/model/traceのmetadataをbackend storeへ記録し、artifactは別のartifact storeへ置く。この分離を理解せずにbackup、retention、権限、災害復旧を設計すると、metadataだけ復旧してartifactが欠ける、またはartifactだけ残ってlineageを失う。\n\n運用台帳では少なくとも次を別々に固定する。\n\n- MLflow versionとserver configuration\n- backend store URI、DB engine/version、migration state、backup/restore手順\n- artifact storeのbucket/container/path、credential principal、encryption/retention\n- Registry/experiment/workspaceの論理境界\n- network exposure、TLS終端、allowed hosts/CORS、authentication/authorization\n- trace payloadの保存先、export先、retention、機密情報の扱い"
    },
    {
      "heading": "artifact accessは「proxyするか、clientが直接触るか」で責任が変わる",
      "text": "MLflow Tracking Serverはartifact accessをproxyできる。`--artifacts-destination` を使う構成ではclientはTracking Server経由でartifactへアクセスでき、server側credentialが使われる。一方、`--default-artifact-root` と `--no-serve-artifacts` を使う構成ではclientがstorageへ直接アクセスし、client側にstorage credentialが必要になる。\n\nこの差は単なるperformance設定ではなく、credential boundaryである。proxy構成ではTracking Serverがアクセス可能なartifactへの権限が集約されるため、server compromiseや過剰権限のblast radiusを評価する。direct構成では各client principalへ必要最小権限を付与し、credential配布・rotation・失効を管理する。\n\n既存experimentは作成時のartifact locationをmetadataとして保持するため、後からproxy modeへ切り替えても既存experimentが自動的に新経路へ移行するとは限らない。migration時は新旧experimentのartifact URIと実アクセス経路をreadbackする。"
    },
    {
      "heading": "認証・認可とnetwork perimeterを混同しない",
      "text": "MLflowはbasic HTTP authentication用のauth appを提供し、experiment、registered model、scorer等へのaccess controlを構成できる。公式Tracking Server文書は、productionでTLS/HTTPSやproxy authenticationを付加するためreverse proxyやVPNを推奨している。\n\nしたがって、MLflow内のuser/permissionだけをinternet-facing serverの完全な防御境界とみなさない。少なくとも次を分離して確認する。\n\n- internet/VPC/LANからの到達範囲\n- TLS terminationとcertificate更新\n- reverse proxy / IdP / VPN等の外周認証\n- MLflow内resource permission\n- backend DBとartifact storeのservice credential\n- admin password/secret key/token等のsecret管理\n\n`--host 0.0.0.0` で外部公開する場合は、`--allowed-hosts` と `--cors-allowed-origins` 等のsecurity settingを明示し、実際のreverse proxy経路からnegative testする。"
    },
    {
      "heading": "Tracing / OpenTelemetryは観測経路そのものがdata boundaryになる",
      "text": "MLflow TracingはOpenTelemetryと互換で、MLflow ServerはOTLP `/v1/traces` endpointを提供する。またMLflow SDKからOTLP backendへtraceをexportでき、dual exportも構成できる。\n\ntraceにはprompt、model input/output、tool引数、retrieved context、user identifier、error、metadata等が入り得る。そのため「observabilityだから安全な付帯情報」と扱わない。instrumentation開始前に、何をspan attribute/eventとして記録するか、redaction、sampling、retention、export先、tenant/experiment分離を決める。\n\nOTLP exporterのheaderへAPI key等を渡す構成では、そのsecretの環境変数・deployment manifest・process dump・debug logへの露出も監査対象にする。dual exportを使う場合はMLflow側と外部observability backend側の両方に同じtraceが残り得るため、削除・retention・DSR等の運用を二重に確認する。"
    },
    {
      "heading": "Model Registryとpromotionは「登録済み=本番承認」ではない",
      "text": "Model Registryはmodel versionを識別・管理するための機構であり、登録されていること自体は組織の品質承認や本番投入承認を意味しない。production promotionでは、exact model/version、artifact digest、evaluation結果、approval記録、serving deploymentとの対応を別のcontrolとして残す。\n\nmodel URIやalias等の参照を使う場合、mutableな参照先の変化を考慮し、release時には最終的に解決されたimmutable artifact/versionを記録する。rollback時も同じartifactへ戻れることを確認する。"
    },
    {
      "heading": "database migrationとversion upgrade",
      "text": "database-backed storeではMLflow serverが古いschemaに対して起動できない場合があり、公式documentationは`mlflow db upgrade`と事前backupを案内している。upgradeをapplication image更新と同一視せず、次の順序をrunbook化する。\n\n1. current MLflow version、DB schema、plugin/driver compatibilityを固定する。\n2. backend DBとartifact storeの復旧可能なbackup/readbackを取る。\n3. stagingまたはcopyでmigrationを検証する。\n4. schema migrationを実行する。\n5. server起動後、run/experiment/model/trace/artifactの代表fixtureをreadbackする。\n6. rollback不能なmigrationが含まれる場合は、復旧点をDB backup側へ置く。"
    },
    {
      "heading": "failure modes",
      "text": "- metadata DBは復旧したがartifact storeが欠損し、run/model lineageが壊れる。\n- proxy artifact modeのserver credentialが過剰権限で、server compromise時に広範囲のartifactへ到達できる。\n- direct artifact modeでclient credentialが端末やCIへ拡散する。\n- reverse proxyだけ更新してMLflow側permissionを確認せず、resource isolationが崩れる。\n- traceへprompt、PII、secret、retrieved confidential dataが保存され、別のobservability backendへも複製される。\n- MLflow upgradeでDB migrationが必要なのにbackup/readbackをせず、復旧不能になる。\n- mutableなmodel参照だけをdeployment recordへ残し、後からexact artifactを再現できない。\n- artifact serving mode変更後も旧experimentが旧URIを保持し、想定外のcredential pathを使い続ける。"
    },
    {
      "heading": "concrete controls",
      "text": "- server image/package version、config、plugin、DB driverをpinし変更履歴を残す。\n- backend DBとartifact storeを別々にbackupし、復旧演習で相互整合をreadbackする。\n- productionではnetwork exposure、TLS、reverse proxy/IdP、MLflow permissionを多層で管理する。\n- artifact proxy/direct方式を明示し、service/client principalをleast privilege化する。\n- admin password、CSRF secret、DB credential、object-store credential、OTLP header secretをsecret managerへ置きrotationする。\n- trace instrumentationにallowlist/redactionを設け、prompt/output/tool/retrieval dataのretentionを明示する。\n- model promotion時にexact version/artifact hash/evaluation/approval/deploymentを紐づける。\n- upgrade前後にrepresentative run、artifact、registry、traceをreadbackする。\n- server、DB、artifact store、OTLP exporterの監査logを相関できるidentifierで残す。"
    },
    {
      "heading": "limitations / counterevidence",
      "text": "MLflowの標準機能だけで組織のIAM、network perimeter、secret management、data classification、backup、legal retentionが自動的に完成するわけではない。逆に、reverse proxyや外部IdPを導入しただけでもMLflow resource permissionやartifact credentialが自動的にleast privilegeになるわけではない。\n\nartifact proxyはclient credentialを減らせる一方、server credentialへ権限が集約される。direct accessはserverのartifact data pathを外せる一方、client credential配布面が広がる。どちらが安全かはdeployment topologyと組織のIAM設計による。\n\nOpenTelemetry互換性は観測先の選択肢を増やすが、trace dataの機密性やretentionを保証するものではない。"
    },
    {
      "heading": "OPEN_UNKNOWN",
      "text": "- hosted MLflow serviceや各cloud/managed integrationでは、標準OSS serverとは異なるIAM、network、retention、backup、SLAが追加され得る。\n- plugin、custom auth、custom artifact repository、reverse proxy構成では標準documentation以外のfailure modeが生じ得る。\n- current deploymentで既存experimentがどのartifact URIを保持しているかは、構成ファイルだけでなく実metadataのreadbackが必要である。\n- trace payloadに含まれる機密情報の範囲はinstrumentation対象libraryとapplication codeに依存するため、実trace sampleの監査が必要である。"
    },
    {
      "heading": "SAFE_WORDING",
      "text": "MLflowはTracking、Registry、Tracing等を統合できるが、運用上はTracking Server、backend store、artifact store、authentication/authorization、trace export、model promotionを別の境界として管理する。artifact access方式やtrace export先によってcredential/data boundaryが変わるため、configurationだけでなく実際のURI、principal、保存先、permission、代表fixtureをreadbackして確認する。"
    }
  ],
  "human_url": "/tools/ea-174-mlflow-tracking-tracing-registry-artifact-access",
  "markdown_url": "/agent/article.md?path=%2Ftools%2Fea-174-mlflow-tracking-tracing-registry-artifact-access",
  "json_url": "/agent/article.json?path=%2Ftools%2Fea-174-mlflow-tracking-tracing-registry-artifact-access"
}