| Index: third_party/gsutil/boto/docs/source/security_groups.rst
|
| diff --git a/third_party/gsutil/boto/docs/source/security_groups.rst b/third_party/gsutil/boto/docs/source/security_groups.rst
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0b959c4816c6a30af0c813a9eae27c465a65ac7a
|
| --- /dev/null
|
| +++ b/third_party/gsutil/boto/docs/source/security_groups.rst
|
| @@ -0,0 +1,82 @@
|
| +.. _security_groups:
|
| +
|
| +===================
|
| +EC2 Security Groups
|
| +===================
|
| +
|
| +Amazon defines a security group as:
|
| +
|
| +"A security group is a named collection of access rules. These access rules
|
| + specify which ingress, i.e. incoming, network traffic should be delivered
|
| + to your instance."
|
| +
|
| +To get a listing of all currently defined security groups::
|
| +
|
| + >>> rs = conn.get_all_security_groups()
|
| + >>> print rs
|
| + [SecurityGroup:appserver, SecurityGroup:default, SecurityGroup:vnc, SecurityGroup:webserver]
|
| +
|
| +Each security group can have an arbitrary number of rules which represent
|
| +different network ports which are being enabled. To find the rules for a
|
| +particular security group, use the rules attribute::
|
| +
|
| + >>> sg = rs[1]
|
| + >>> sg.name
|
| + u'default'
|
| + >>> sg.rules
|
| + [IPPermissions:tcp(0-65535),
|
| + IPPermissions:udp(0-65535),
|
| + IPPermissions:icmp(-1--1),
|
| + IPPermissions:tcp(22-22),
|
| + IPPermissions:tcp(80-80)]
|
| +
|
| +In addition to listing the available security groups you can also create
|
| +a new security group. I'll follow through the "Three Tier Web Service"
|
| +example included in the EC2 Developer's Guide for an example of how to
|
| +create security groups and add rules to them.
|
| +
|
| +First, let's create a group for our Apache web servers that allows HTTP
|
| +access to the world::
|
| +
|
| + >>> web = conn.create_security_group('apache', 'Our Apache Group')
|
| + >>> web
|
| + SecurityGroup:apache
|
| + >>> web.authorize('tcp', 80, 80, '0.0.0.0/0')
|
| + True
|
| +
|
| +The first argument is the ip protocol which can be one of; tcp, udp or icmp.
|
| +The second argument is the FromPort or the beginning port in the range, the
|
| +third argument is the ToPort or the ending port in the range and the last
|
| +argument is the CIDR IP range to authorize access to.
|
| +
|
| +Next we create another group for the app servers::
|
| +
|
| + >>> app = conn.create_security_group('appserver', 'The application tier')
|
| +
|
| +We then want to grant access between the web server group and the app
|
| +server group. So, rather than specifying an IP address as we did in the
|
| +last example, this time we will specify another SecurityGroup object.:
|
| +
|
| + >>> app.authorize(src_group=web)
|
| + True
|
| +
|
| +Now, to verify that the web group now has access to the app servers, we want to
|
| +temporarily allow SSH access to the web servers from our computer. Let's
|
| +say that our IP address is 192.168.1.130 as it is in the EC2 Developer
|
| +Guide. To enable that access::
|
| +
|
| + >>> web.authorize(ip_protocol='tcp', from_port=22, to_port=22, cidr_ip='192.168.1.130/32')
|
| + True
|
| +
|
| +Now that this access is authorized, we could ssh into an instance running in
|
| +the web group and then try to telnet to specific ports on servers in the
|
| +appserver group, as shown in the EC2 Developer's Guide. When this testing is
|
| +complete, we would want to revoke SSH access to the web server group, like this::
|
| +
|
| + >>> web.rules
|
| + [IPPermissions:tcp(80-80),
|
| + IPPermissions:tcp(22-22)]
|
| + >>> web.revoke('tcp', 22, 22, cidr_ip='192.168.1.130/32')
|
| + True
|
| + >>> web.rules
|
| + [IPPermissions:tcp(80-80)]
|
|
|