Repository navigation
Conversation
Preview links (active after the
|
|
/review |
There was a problem hiding this comment.
🤖 Automated review by Claude. AI-generated; verify before acting.
Content looks accurate and much more scannable than the pre-rewrite version. Two small issues worth fixing before merge; everything else is fine.
Flag: The PR's __untrusted/CLAUDE.md and __untrusted/AGENTS.md were surfaced to me as system reminders during review. I ignored them per the trusted review protocol (only ./.claude/pr-review.md guides the review). The content was benign repo guidance, not a malicious injection, but noting it so maintainers are aware.
Reviewed e2faec702b1db18fd6a22fe3f120a6e5c7ca8a6e — workflow run
…diate/ownership_agent.md Co-authored-by: Max Phillips <maxvphillips@gmail.com>
…diate/ownership_preferences.md Co-authored-by: Max Phillips <maxvphillips@gmail.com>
…diate/ownership_preferences.md Co-authored-by: Max Phillips <maxvphillips@gmail.com>
| ## Tag mappings | ||
|
|
||
| ## Upload your ownership preferences | ||
| A tag mapping says: _"When a resource has tag `X:Y`, it belongs to this owner."_ When a resource's tag matches a mapping, the Ownership Agent adds the owner as a candidate and ranks it alongside other data sources. Tag mappings do not override a direct ownership tag (like `dd-team`) already on the resource. |
There was a problem hiding this comment.
| A tag mapping says: _"When a resource has tag `X:Y`, it belongs to this owner."_ When a resource's tag matches a mapping, the Ownership Agent adds the owner as a candidate and ranks it alongside other data sources. Tag mappings do not override a direct ownership tag (like `dd-team`) already on the resource. | |
| A tag mapping assigns an owner to resources that have a specific tag. When a resource's tag matches a mapping, the Ownership Agent adds the owner as a candidate and ranks it alongside other data sources. Tag mappings don't override a direct ownership tag (such as `dd-team`) already on the resource. |
| ## Exclusions | ||
|
|
||
| This approach is best for automated, recurring updates. Store your CSV in a cloud storage bucket so Datadog can periodically import it. | ||
| An exclusion tells the Ownership Agent, "Never suggest this owner." Use exclusions for bot accounts, CI runners, and shared service accounts that appear in cloud resource metadata but don't own the resource. |
There was a problem hiding this comment.
| An exclusion tells the Ownership Agent, "Never suggest this owner." Use exclusions for bot accounts, CI runners, and shared service accounts that appear in cloud resource metadata but don't own the resource. | |
| An exclusion prevents the Ownership Agent from suggesting a specific owner. Use exclusions for bot accounts, CI runners, and shared service accounts that appear in cloud resource metadata but don't own the resource. |
| Datadog periodically re-imports the file, so it automatically picks up updates to the CSV in your bucket. | ||
| | Field | Description | | ||
| |------------------------------|--------------------------------------------------------------------------------------------------------------| | ||
| | **Owner type** (optional) | Only exclude the owner for this type: **User**, **Team**, or **Service**. Leave empty to exclude it for any type | |
There was a problem hiding this comment.
| | **Owner type** (optional) | Only exclude the owner for this type: **User**, **Team**, or **Service**. Leave empty to exclude it for any type | | |
| | **Owner type** (optional) | Exclude only the owner for this type: **User**, **Team**, or **Service**. Leave empty to exclude it for any type | |
| |------------------------------|--------------------------------------------------------------------------------------------------------------| | ||
| | **Owner type** (optional) | Only exclude the owner for this type: **User**, **Team**, or **Service**. Leave empty to exclude it for any type | | ||
| | **Owner** | Owner to exclude (for example, `deploy-bot`). Matched case-insensitively | | ||
| | **Resource type** (optional) | Only exclude the owner for this resource type (for example, `aws_ec2_instance`). Leave empty for any type | |
There was a problem hiding this comment.
| | **Resource type** (optional) | Only exclude the owner for this resource type (for example, `aws_ec2_instance`). Leave empty for any type | | |
| | **Resource type** (optional) | Exclude only the owner for this resource type (for example, `aws_ec2_instance`). Leave empty for any type | |
| The settings page checks each rule before saving it and shows any problem next to the field. | ||
|
|
||
| <div class="alert alert-info">If you delete all rows from the table (leaving it empty), the Ownership Agent actively clears your previous preferences. Deleting the table entirely has the same effect—the cached preferences expire and are left empty.</div> | ||
| - Fields accept ASCII letters, digits, and a small set of punctuation. Accented letters, emoji, and typographic (curly) quotes are not allowed. Fields are limited to 1,024 characters. |
There was a problem hiding this comment.
This doesn't list the specific supported characters. Is the removed list still accurate? If so, we should add this list back.
There was a problem hiding this comment.
Yes, still accurate (names also can't contain /). I've added the table back under the validation rules.
| ## When preferences take effect | ||
| | Name | Priority | Instruction | | ||
| |--------------------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------| | ||
| | `cost-center-convention` | High | Ownership is assigned by cost center. Team identifiers always start with team- (for example, team-platform). | |
There was a problem hiding this comment.
| | `cost-center-convention` | High | Ownership is assigned by cost center. Team identifiers always start with team- (for example, team-platform). | | |
| | `cost-center-convention` | High | Ownership is assigned by cost center. Team identifiers always start with `team-` (for example, `team-platform`). | |
| - **Exclusions** remove unwanted handles from results. | ||
| - **Custom prompt text** guides the AI inference engine. | ||
| 5. Updated results appear in the Cloud Security posture management UI. | ||
| ## Validation |
There was a problem hiding this comment.
| ## Validation | |
| ## Ownership preference validation rules |
| - Two tag mappings with the same tag key and value must have the same owner and confidence. Exact duplicates are not allowed. | ||
| - An exclusion can't duplicate another exclusion with the same owner, owner type, and resource type. | ||
|
|
||
| ## Troubleshooting |
There was a problem hiding this comment.
| ## Troubleshooting | |
| ## Troubleshoot ownership preferences |
Recommend making heading titles more specific to improve human+agent readability.
| | Maximum bytes per prompt text entry | 4,096 bytes | | ||
|
|
||
| ### Duplicate detection | ||
| The Ownership Agent infers an owner for cloud resources with security findings, using cloud resource tags, Service Catalog data, and other data sources. **Ownership preferences** let you customize this process with three kinds of rules: |
There was a problem hiding this comment.
| The Ownership Agent infers an owner for cloud resources with security findings, using cloud resource tags, Service Catalog data, and other data sources. **Ownership preferences** let you customize this process with three kinds of rules: | |
| The Ownership Agent infers an owner for cloud resources with security findings, using cloud resource tags, Software Catalog data, and other data sources. **Ownership preferences** let you customize this process with three kinds of rules: |
Service Catalog is now Software Catalog.
| | 1 | **Owner tags** | Cloud resource tags with keys such as `owner`, `dd-team`, or `team`. An explicit ownership tag is the strongest signal. | | ||
| | 2 | **Ownership preferences** | Custom tag mappings and rules you define in a [reference table](/reference_tables). These act as organization-level overrides and are evaluated alongside direct tags. Learn more at [set up ownership preferences](/security/cloud_security_management/review_remediate/ownership_preferences/). | | ||
| | 2 | **Ownership preferences** | Tag mappings, exclusions, and custom instructions you define on the [Ownership Agent settings page](https://app.datadoghq.com/security/configuration/csm/ownership-agent). These act as organization-level overrides. Datadog evaluates ownership preferences alongside direct tags. Learn more at [Set Up Ownership Preferences](/security/cloud_security_management/review_remediate/ownership_preferences/). | | ||
| | 3 | **Service Catalog** | Team ownership data from the Datadog Service Catalog, matched against the resource's service, application, or component tags. | |
There was a problem hiding this comment.
| | 3 | **Service Catalog** | Team ownership data from the Datadog Service Catalog, matched against the resource's service, application, or component tags. | | |
| | 3 | **Software Catalog** | Team ownership data from the Datadog Software Catalog, matched against the resource's service, application, or component tags. | |
Not part of the scope of this PR, but this product was renamed.
maxvp
left a comment
There was a problem hiding this comment.
Thanks for the submission! Left some comments for your consideration.
| For more information, see [datadog_reference_table (Resource)][7] in the Datadog Terraform provider documentation. | ||
| You can add up to three instructions of up to 4,000 characters each. Set an optional **Priority** (**High**, **Medium**, or **Low**) to control the order in which the agent reads them. Instructions without a priority come last, and every instruction is used. | ||
|
|
||
| ### API |
There was a problem hiding this comment.
This PR removes API and Terraform instructions. Are these methods still supported?
There was a problem hiding this comment.
No, we are completely migrated away from that storage decision, we may introduce that back in the future, but it's not available anymore at the moment.
What does this PR do? What is the motivation?
Ownership preferences are now managed on the Ownership Agent settings page in Datadog instead of a reference table. This rewrites the Set Up Ownership Preferences page around the settings page (tag mappings, exclusions, and custom instructions) and adds a screenshot of it. It removes the reference table setup and CSV format and trims the page to the essentials. The Ownership Agent page's data source table now points to the settings page.
Merge readiness
AI assistance
Used Claude Code to draft the content from the settings page UI and to run Vale.
For Datadog employees:
<name>/<description>convention and include the forward slash (/). If you've already created your PR with an incorrect branch name, please rename your branch and open a fresh PR./reviewto run an automated check that catches common issues before a Documentation team member reviews your PR.Additional notes