OLD | NEW |
---|---|
(Empty) | |
1 syntax = "proto3"; | |
2 package traffic_annotation; | |
3 | |
4 // TODO: include policies | |
5 | |
6 // Describes a specific kind of network traffic based on a fine-grained | |
7 // semantic classification of all network traffic generated by Chrome. | |
8 // Used for auditing purposes. | |
9 message NetworkTrafficAnnotation { | |
10 ////////////////////////////////////////// | |
11 // Section 1: Location of what is audited. | |
battre
2016/10/18 09:05:28
please delete these lines.
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
12 | |
13 // Description of the call site that is audited. | |
14 // An annotation is required for calls from net/ (or go/cronet) | |
15 // 1) every call of net::URLFetcher::Create() | |
16 // 2) every call of net::URLRequestContext::CreateRequest() | |
17 // 3) every call of net::TCPClientSocket() | |
18 // 4) every call of net::UDPClientSocket() | |
19 // 5) every call of net::SSLClientSocket() | |
20 // 6) every call of implementations of | |
21 // net::ClientSocketFactory::Create.*ClientSocket | |
22 // 7) every call of ResourceFetcher::Create() or | |
23 // WebURLRequest::setRequestContext( | |
24 // WebURLRequest::RequestContextInternal) | |
25 // TODO: figure out how to deal with requests from the renderer | |
26 // TODO: investigate ClientSocketPoolManager. | |
27 // | |
28 // An annotation is required for calls via native sockets. | |
29 // A) every call of ::bind() | |
30 // | |
31 // For 1-6, the annotation needs to be assigned to the respective object | |
32 // inline in the same function that triggers the call. If a function | |
33 // contains K calls to functions 1-6, there need to be K annotations in | |
34 // that function accordingly. | |
35 // For A, it may be impossible to add the annotation inline, because | |
36 // the call happens in a third_party library. In this case, the annotation | |
37 // needs to be put into a special whitelist file. | |
battre
2016/10/18 09:05:28
Please delete this block.
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
38 | |
39 // This is a globally unique identifier that must stay unchanged while the | |
40 // network request carries the same semantic meaning. If the network request | |
41 // gets a new meaning, this ID needs to be changed. | |
42 // The purpose of this ID is to give humans a chance to annotate specific | |
43 // audit policies and keep the annotation assigned to the policy even when | |
battre
2016/10/18 09:05:29
The purpose of this ID is to give humans a chance
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
44 // that changes a little bit (e.g. adding a new piece of data that is sent | |
45 // along with a network request). | |
46 // IDs of one component should have a shared prefix so that sorting all | |
47 // network requests by unique_id groups those policies that belong to the | |
battre
2016/10/18 09:05:28
so that sorting all NetworkTrafficAnnotations by u
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
48 // same component together. | |
49 // For example: | |
50 // "spellchecker_lookup" | |
51 string unique_id = 1; | |
52 | |
53 // Encapsulates information about the code location that generates this kind | |
54 // of | |
55 // network traffic. | |
battre
2016/10/18 09:05:28
please fix line wrapping. Also below.
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
56 message TrafficSource { | |
57 // File name where the network request is triggered. | |
58 // This is typically filled by the extractor and does not need to be | |
59 // specified | |
60 // in the source code. For manual whitelisting this needs to be specified. | |
61 string file = 1; | |
62 | |
63 // Function name where the network request is instantiated. | |
64 // This is typically filled by the extractor and does not need to be | |
65 // specified | |
66 // in the source code. For manual whitelisting this needs to be specified. | |
67 string function = 2; | |
68 | |
69 // __LINE__ in file, where the AuditPolicy object is instantiated. | |
70 // This is typically filled by the extractor and does not need to be | |
71 // specified | |
72 // in the source code. | |
73 // For whitelisted network requests in third_party that cannot be properly | |
battre
2016/10/18 09:05:28
third_party/
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
74 // annotated in the source code, this attribute is empty. | |
75 int32 line = 3; | |
76 | |
77 // For whitelisted network requests in third_party that cannot be properly | |
battre
2016/10/18 09:05:28
third_party/
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
78 // annotated in the source code, this distinguishes between the first, | |
79 // second, … annotated call. | |
battre
2016/10/18 09:05:28
please replace ... with three proper dots.
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
80 // For annotations in the source code, this is not used because the line | |
81 // attribute uniquely identifies the network request. | |
82 int32 call_number = 4; | |
83 } | |
84 | |
85 TrafficSource source = 2; | |
86 | |
87 ///////////////////////////////////////////////////////// | |
88 // Section 2: Meta information about the network request. | |
battre
2016/10/18 09:05:28
Replace this just with // Meta information about t
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
89 message TrafficSemantics { | |
90 // Justification for an empty AuditPolicy policy. | |
91 // Typically this can be either a TODO or a hint that the annotation is | |
92 // made upstream in the code. For example, if net::URLFetcher::Create() has | |
93 // has annotation, the net::TCPClientSocket() that is used by the | |
94 // URLFetcher does not need to be annotated as well. | |
95 string empty_policy_justification = 1; | |
96 | |
97 // What component triggers the request. The components should be human | |
98 // readable and don’t need to reflect the components/ directory. Avoid | |
99 // abbreviations. | |
100 // Examples: spellchecker, component updater, website | |
101 string sender = 2; | |
102 | |
103 // Plaintext description of the network request in language that is | |
104 // understandable by admins (ideally also users). Please avoid acronyms. | |
battre
2016/10/18 09:05:28
Please describe the feature and the feature's valu
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
105 // Examples: | |
106 // - “Sends a sequence of three consecutive words from a user input field | |
107 // to Google’s online spell checker.” | |
battre
2016/10/18 09:05:28
Please copy the text from the spell checker annota
battre
2016/10/18 09:05:28
please remove typographic quotes (here and elsewhe
Ramin Halavati
2016/10/18 10:03:22
Done.
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
108 // - “A network request that comes from web content (a page the user | |
109 // visits)” | |
110 string description = 3; | |
111 | |
112 // What triggered the network request. Use a textual description. This | |
113 // should be a human readable string. | |
114 // For things that are clearly part of the website (resource load, form | |
115 // submission, fetch by a service worker,...), you *may* just put “website” | |
116 // here. | |
117 string trigger = 4; | |
118 | |
119 // What nature of data is being sent. This should be a human readable | |
120 // string. Any user data and/or PII should be pointed out. | |
121 // Examples: “log files from /var/...”, “statistics about foobar”, “the | |
122 // signature of a form of a website”, “installed extensions and their | |
123 // version”, “a word on a website the user tapped on” | |
124 string data = 5; | |
125 | |
126 enum Destination { | |
127 // A website the user visits (this may be google.com) or interacts with. | |
128 // For example search engines of the omnibar (also the default search | |
129 // engine) would be considered websites. | |
130 WEBSITE = 0; | |
131 // A Google owned service, like SafeBrowsing, spellchecking, ... | |
132 GOOGLE_OWNED_SERVICE = 1; | |
133 // Other endpoints, e.g. a service hosting a PAC script | |
134 OTHER = 2; | |
135 } | |
136 Destination destination = 6; | |
137 // Human readable description in case the destination points to OTHER. | |
battre
2016/10/18 09:05:28
New line before this.
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
138 string destination_other = 7; | |
139 } | |
140 | |
141 TrafficSemantics semantics = 3; | |
142 | |
143 message TrafficPolicy { | |
144 // Whether cookies/channel IDs/... can be sent or saved (use true if at | |
145 // least one is correct). | |
146 bool cookies_allowed = 1; | |
147 | |
148 // If cookies_allowed is true and the request uses not the profile cookie | |
149 // store, please specify this here. You may use “system” to indicate that | |
150 // the System RequestContext and its cookie store are used or specify other | |
151 // exceptions (e.g. SafeBrowsing uses a separate cookie store). | |
152 string cookies_store_exceptions = 2; | |
153 | |
154 // Human readable description of how to enable/disable a feature that | |
155 // triggers this network request by a user. Use “NA”, if no such setting | |
156 // exists (e.g. “Disable ‘Use a web service to help resolve spelling | |
157 // errors.’ in Chrome’s settings under Advanced”). | |
158 string setting = 3; | |
159 | |
160 // Example policy configuration that disables this network request. | |
161 // This would be a text serialized protobuf of any enterprise policy. | |
162 // see out/Debug/gen/components/policy/cloud_policy.proto | |
163 repeated string policy = 4; | |
164 // TODO: repeated enterprise_management.CloudPolicySettings policy = 4; | |
165 } | |
166 | |
167 TrafficPolicy policy = 4; | |
168 | |
169 // Justification for not having a policy that disables this feature. | |
170 string policy_exception_justification = 5; | |
battre
2016/10/18 09:05:28
Please move this into TrafficPolicy.
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
171 }; | |
172 | |
173 message ExtractedAuditPolicies { | |
battre
2016/10/18 09:05:28
ExtractedNetworkTrafficAnnotation (please fix the
Ramin Halavati
2016/10/18 10:03:22
Done.
| |
174 repeated AuditPolicies audit_policies = 1; | |
175 }; | |
176 | |
177 message WhitelistedAuditPolicies { | |
178 repeated AuditPolicies audit_policies = 1; | |
179 }; | |
180 | |
181 message AuditPolicies { | |
182 ExtractedAuditPolicies extracted_audit_policies = 1; | |
183 WhitelistedAuditPolicies whitelisted_audit_policies = 2; | |
184 }; | |
OLD | NEW |