Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(543)

Side by Side Diff: third_party/gsutil/gslib/addlhelp/security.py

Issue 1377933002: [catapult] - Copy Telemetry's gsutilz over to third_party. (Closed) Base URL: https://github.com/catapult-project/catapult.git@master
Patch Set: Rename to gsutil. Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # -*- coding: utf-8 -*-
2 # Copyright 2015 Google Inc. All Rights Reserved.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 """Additional help about types of credentials and authentication."""
16
17 from __future__ import absolute_import
18
19 from gslib.help_provider import HelpProvider
20
21 _DETAILED_HELP_TEXT = ("""
22 <B>OVERVIEW</B>
23 This help section provides details about various precautions taken by gsutil
24 to protect data security, as well as recommendations for how customers should
25 safeguard security.
26
27
28 <B>TRANSPORT LAYER SECURITY</B>
29 gsutil performs all operations using transport-layer encryption (HTTPS), to
30 protect against data leakage over shared network links. This is also important
31 because gsutil uses "bearer tokens" for authentication (OAuth2) as well as for
32 resumable upload identifiers, and such tokens must be protected from being
33 eavesdropped and reused.
34
35 gsutil also supports the older HMAC style of authentication via the XML API
36 (see "gsutil help apis"). While HMAC authentication does not use bearer
37 tokens (and thus is not subject to eavesdropping/replay attacks), it's still
38 important to encrypt data traffic.
39
40 Prior to gsutil release 4.0 it was possible to use HTTP instead of HTTPS by
41 setting the "is_secure" configuration parameter in the [Boto] section of the
42 boto configuration file to False. However, starting with gsutil version 4.0
43 setting is_secure to False is disallowed. For more details about different
44 credential options, see "gsutil help creds".
45
46
47 <B>LOCAL FILE STORAGE SECURITY</B>
48 gsutil takes a number of precautions to protect against security exploits in
49 the files it stores locally:
50
51 - When the gsutil config command runs it sets file protection mode 600
52 ("-rw-------") on the the .boto configuration file it generates, so only
53 the user (or superuser) can read it. This is important because these files
54 contain security-sensitive information, including credentials and proxy
55 configuration.
56
57 - The gsutil config command also uses file protection mode 600 for the
58 private key file stored locally when you create service account
59 credentials.
60
61 - The default level of logging output from gsutil commands does not include
62 security-sensitive information, such as OAuth2 tokens and proxy
63 configuration information. (See the "RECOMMENDED USER PRECAUTIONS" section
64 below if you increase the level of debug output, using the gsutil -D
65 option.)
66
67 Note that protection modes are not supported on Windows, so if you
68 use gsutil on Windows we recommend using an encrypted file system and strong
69 account passwords.
70
71
72 <B>SECURITY-SENSITIVE FILES WRITTEN TEMPORARILY TO DISK BY GSUTIL</B>
73 gsutil buffers data in temporary files in several situations:
74
75 - While compressing data being uploaded via gsutil cp -z, gsutil
76 buffers the data in temporary files with protection 600, which it
77 deletes after the upload is complete (similarly for downloading files
78 that were uploaded with gsutil cp -z or some other process that sets the
79 Content-Encoding to "gzip"). However, if you kill the gsutil process
80 while the upload is under way the partially written file will be left
81 in place. See the "CHANGING TEMP DIRECTORIES" section in
82 "gsutil help cp" for details of where the temporary files are written
83 and how to change the temp directory location.
84
85 - When performing a resumable upload gsutil stores the upload ID (which,
86 as noted above, is a bearer token and thus should be safe-guarded) in a
87 file under ~/.gsutil/tracker-files with protection 600, and deletes this
88 file after the upload is complete. However, if the upload doesn't
89 complete successfully the tracker file is left in place so the resumable
90 upload can be re-attempted later. Over time it's possible to accumulate
91 these tracker files from aborted upload attempts, though resumable
92 upload IDs are only valid for 1 week, so the security risk only exists
93 for files less than that old. If you consider the risk of leaving
94 aborted upload IDs in the tracker directory too high you could modify
95 your upload scripts to delete the tracker files; or you could create a
96 cron job to clear the tracker directory periodically.
97
98 - The gsutil rsync command stores temporary files (with protection 600)
99 containing the names, sizes, and checksums of source and destination
100 directories/buckets, which it deletes after the rsync is complete.
101 However, if you kill the gsutil process while the rsync is under way the
102 listing files will be left in place.
103
104 Note that gsutil deletes temporary files using the standard OS unlink system
105 call, which does not perform `data wiping
106 <https://en.wikipedia.org/wiki/Data_erasure>`_. Thus, the content of such
107 temporary files can be recovered by a determined adversary.
108
109
110 <B>ACCESS CONTROL LISTS</B>
111 Unless you specify a different ACL (e.g., via the gsutil cp -a option), by
112 default objects written to a bucket use the default object ACL on that bucket.
113 Unless you modify that ACL (e.g., via the gsutil defacl command), by default
114 it will allow all project editors write access to the object and read/write
115 access to the object's metadata; and will allow all project viewers read
116 access to the object.
117
118 The GCS access control system includes the ability to specify that objects are
119 publicly readable. Make sure you intend for any objects you write with this
120 permission to be public. Once "published", data on the Internet can be copied
121 to many places, so it's effectively impossible to regain read control over an
122 object written with this permission.
123
124 The GCS access control system includes the ability to specify that buckets are
125 publicly writable. While configuring a bucket this way can be convenient for
126 various purposes, we recommend against using this permission - it can be
127 abused for distributing illegal content, viruses, and other malware, and the
128 bucket owner is legally and financially responsible for the content stored in
129 their buckets. If you need to make content available to customers who don't
130 have Google accounts consider instead using signed URLs (see
131 "gsutil help signurl").
132
133
134 <B>SOFTWARE INTEGRITY AND UPDATES</B>
135 gsutil is distributed as a standalone bundle via tar and zip files stored in
136 the gs://pub bucket, as a PyPi module, and as part of the bundled Cloud
137 SDK release. Each of these distribution methods takes a variety of security
138 precautions to protect the integrity of the software. We strongly recommend
139 against getting a copy of gsutil from any other sources (such as mirror
140 sites).
141
142
143 <B>PROXY USAGE</B>
144 gsutil supports access via proxies, such as Squid and a number of commercial
145 products. A full description of their capabilities is beyond the scope of this
146 documentation, but proxies can be configured to support many security-related
147 functions, including virus scanning, Data Leakage Prevention, control over
148 which certificates/CA's are trusted, content type filtering, and many more
149 capabilities. Some of these features can slow or block legitimate gsutil
150 behavior. For example, virus scanning depends on decrypting file content,
151 which in turn requires that the proxy terminate the gsutil connection and
152 establish a new connection - and in some cases proxies will rewrite content in
153 ways that result in checksum validation errors and other problems.
154
155 For details on configuring proxies see the proxy help text in your .boto
156 configuration file (generated by the gsutil config command).
157
158
159 <B>ENCRYPTION AT REST</B>
160 All GCS data are stored encrypted. For more information see
161 `Server-Side Encryption
162 <https://cloud.google.com/storage/docs/concepts-techniques#encryption>`_.
163
164
165 <B>DATA PRIVACY FROM GOOGLE EMPLOYEES</B>
166 Google employees will never look at your data unless you first explicitly
167 grant them permission to do so while troubleshooting a specific incident.
168
169 Google will never ask you to share your credentials, password, or other
170 security-sensitive information. Beware of potential phishing scams where
171 someone attempts to impersonate Google and asks for such information.
172
173
174 <B>MEASUREMENT DATA</B>
175 The gsutil perfdiag command collects a variety of performance-related
176 measurements and details about your local system and network environment, for
177 use in troubleshooting performance problems. None of this information will be
178 sent to Google unless you choose to send it.
179
180
181 <B>RECOMMENDED USER PRECAUTIONS</B>
182 The first and foremost precaution is: Never share your credentials. Each user
183 should have distinct credentials.
184
185 If you run gsutil -D (to generate debugging output) it will include OAuth2
186 refresh and access tokens in the output. Make sure to redact this information
187 before sending this debug output to anyone during troubleshooting/tech support
188 interactions.
189
190 The proxy configuration information in the .boto configuration is
191 security-sensitive, especially if your proxy setup requires user and
192 password information. Even if your proxy setup doesn't require user and
193 password, the host and port number for your proxy is often considered
194 security-sensitive. Protect access to your .boto configuration file.
195
196 If you are using gsutil from a production environment (e.g., via a cron job
197 running on a host in your data center), use service account credentials rather
198 than individual user account credentials. These credentials were designed for
199 such use and, for example, protect you from losing access when an employee
200 leaves your company.
201 """)
202
203
204 class CommandOptions(HelpProvider):
205 """Additional help about security and privacy considerations using gsutil."""
206
207 # Help specification. See help_provider.py for documentation.
208 help_spec = HelpProvider.HelpSpec(
209 help_name='security',
210 help_name_aliases=['encryption', 'protection', 'privacy', 'proxies',
211 'proxy'],
212 help_type='additional_help',
213 help_one_line_summary='Security and Privacy Considerations',
214 help_text=_DETAILED_HELP_TEXT,
215 subcommand_help_text={},
216 )
OLDNEW
« no previous file with comments | « third_party/gsutil/gslib/addlhelp/retries.py ('k') | third_party/gsutil/gslib/addlhelp/subdirs.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698