Anthropic Sensitive Claude Project Role Assigned to User
Detects when a Claude project owner or editor role is granted through a role_assignment_granted event. Project owners
and editors can access project chats, artifacts, and knowledge bases that may hold sensitive data. An attacker with
organization access can grant these roles to persist access to high-value project content without holding organization
admin privileges.
Elastic rule (View on GitHub)
1[metadata]
2creation_date = "2026/09/15"
3integration = ["anthropic"]
4maturity = "production"
5updated_date = "2026/09/23"
6
7[rule]
8author = ["Elastic"]
9description = """
10Detects when a Claude project owner or editor role is granted through a `role_assignment_granted` event. Project owners
11and editors can access project chats, artifacts, and knowledge bases that may hold sensitive data. An attacker with
12organization access can grant these roles to persist access to high-value project content without holding organization
13admin privileges.
14"""
15false_positives = [
16 """
17 Legitimate project collaboration routinely adds owners and editors when teams spin up or staff Claude projects.
18 Verify the project (`anthropic.audit.resource_id`), role, and available actor fields against expected membership
19 changes.
20 """,
21 """
22 Shared service or automation accounts may receive editor access during content workflows. Confirm the assigner
23 and affected project are expected for the workflow; grantee identity may require correlating org membership or
24 `anthropic.audit.target_id` when the API supplies it.
25 """,
26]
27from = "now-9m"
28index = ["logs-anthropic.audit-*"]
29language = "kuery"
30license = "Elastic License v2"
31name = "Anthropic Sensitive Claude Project Role Assigned to User"
32note = """## Triage and analysis
33
34### Investigating Anthropic Sensitive Claude Project Role Assigned to User
35
36First-seen grant of `chat_project:owner` or `chat_project:editor` on a Claude project (`organization.id` +
37`anthropic.audit.resource_id`). Organization membership `admin` promotions (`claude_user_role_updated`) are covered
38by **Anthropic Admin Role Assigned to User**. Self-assignment at project creation is common; `user.id` may be absent
39for `anthropic_actor`.
40
41Unauthorized = grant to an unexpected collaborator (especially external), no project onboarding ticket, or followed
42by export / public artifact sharing / logging changes on the same project. Close as FP for known team staffing with
43ticket or a recurring collaborator baseline on that project.
44
45#### Possible investigation steps
46
47- When `user_actor`, identify assigner via email/IP/UA. Review role, `anthropic.audit.resource_id`, and grantee fields
48 (`anthropic.audit.target_id` / `target_type` / `related.user`) when present.
49- Correlate with org membership changes, exports, or artifact sharing involving the same project or users.
50- Escalate when the grantee is new/external or privileged data access follows; close when ticket/baseline matches.
51
52### False positive analysis
53
54- Routine project staffing and self-assignment at creation are expected — baseline recurring collaborators.
55
56### Response and remediation
57
58- On unauthorized grant: revoke the project role on that `anthropic.audit.resource_id`, review other changes on the
59 same project/org, and audit project content access and recent exports.
60"""
61references = [
62 "https://platform.claude.com/docs/en/api/compliance/activities/list",
63]
64risk_score = 47
65rule_id = "28a17de8-c18e-4672-8953-2c2716a3f7b4"
66severity = "medium"
67tags = [
68 "Domain: GenAI",
69 "Platform: Anthropic",
70 "Data Source: Anthropic Audit Logs",
71 "Use Case: Identity and Access Audit",
72 "Use Case: Threat Detection",
73 "Use Case: UEBA",
74 "Resources: Investigation Guide",
75 "Rule Type: New Terms",
76 "Tactic: Persistence",
77 "Tactic: Privilege Escalation",
78]
79timestamp_override = "event.ingested"
80type = "new_terms"
81
82query = '''
83data_stream.dataset: "anthropic.audit" and
84 event.category: "iam" and
85 event.action: "role_assignment_granted" and
86 user.target.roles: ("chat_project:owner" or "chat_project:editor")
87'''
88
89
90[[rule.threat]]
91framework = "MITRE ATT&CK"
92[[rule.threat.technique]]
93id = "T1098"
94name = "Account Manipulation"
95reference = "https://attack.mitre.org/techniques/T1098/"
96[[rule.threat.technique.subtechnique]]
97id = "T1098.003"
98name = "Additional Cloud Roles"
99reference = "https://attack.mitre.org/techniques/T1098/003/"
100
101
102
103[rule.threat.tactic]
104id = "TA0003"
105name = "Persistence"
106reference = "https://attack.mitre.org/tactics/TA0003/"
107[[rule.threat]]
108framework = "MITRE ATT&CK"
109[[rule.threat.technique]]
110id = "T1098"
111name = "Account Manipulation"
112reference = "https://attack.mitre.org/techniques/T1098/"
113[[rule.threat.technique.subtechnique]]
114id = "T1098.003"
115name = "Additional Cloud Roles"
116reference = "https://attack.mitre.org/techniques/T1098/003/"
117
118
119
120[rule.threat.tactic]
121id = "TA0004"
122name = "Privilege Escalation"
123reference = "https://attack.mitre.org/tactics/TA0004/"
124
125[rule.investigation_fields]
126field_names = [
127 "@timestamp",
128 "event.action",
129 "event.id",
130 "organization.id",
131 "user.id",
132 "user.target.roles",
133 "anthropic.audit.target_id",
134 "anthropic.audit.target_type",
135 "related.user",
136 "anthropic.audit.resource_id",
137 "anthropic.audit.resource_type",
138 "anthropic.audit.actor.type",
139 "user.email",
140 "user.target.id",
141 "source.ip",
142 "user_agent.original",
143]
144
145[rule.new_terms]
146field = "new_terms_fields"
147value = ["organization.id", "anthropic.audit.resource_id"]
148[[rule.new_terms.history_window_start]]
149field = "history_window_start"
150value = "now-14d"
Triage and analysis
Investigating Anthropic Sensitive Claude Project Role Assigned to User
First-seen grant of chat_project:owner or chat_project:editor on a Claude project (organization.id +
anthropic.audit.resource_id). Organization membership admin promotions (claude_user_role_updated) are covered
by Anthropic Admin Role Assigned to User. Self-assignment at project creation is common; user.id may be absent
for anthropic_actor.
Unauthorized = grant to an unexpected collaborator (especially external), no project onboarding ticket, or followed by export / public artifact sharing / logging changes on the same project. Close as FP for known team staffing with ticket or a recurring collaborator baseline on that project.
Possible investigation steps
- When
user_actor, identify assigner via email/IP/UA. Review role,anthropic.audit.resource_id, and grantee fields (anthropic.audit.target_id/target_type/related.user) when present. - Correlate with org membership changes, exports, or artifact sharing involving the same project or users.
- Escalate when the grantee is new/external or privileged data access follows; close when ticket/baseline matches.
False positive analysis
- Routine project staffing and self-assignment at creation are expected — baseline recurring collaborators.
Response and remediation
- On unauthorized grant: revoke the project role on that
anthropic.audit.resource_id, review other changes on the same project/org, and audit project content access and recent exports.
References
Related rules
- Anthropic Admin Role Assigned to User
- Anthropic MCP Server Created
- Anthropic Admin API Key Created
- Anthropic Compliance API Key Created
- Anthropic Multiple Authentication Failures