diff --git a/openstack/compute/v2/extensions/secgroups/fixtures.go b/openstack/compute/v2/extensions/secgroups/fixtures.go
index 168bbdd..761d9e5 100644
--- a/openstack/compute/v2/extensions/secgroups/fixtures.go
+++ b/openstack/compute/v2/extensions/secgroups/fixtures.go
@@ -80,3 +80,41 @@
 `)
 	})
 }
+
+func mockGetGroupsResponse(t *testing.T, groupID string) {
+	url := fmt.Sprintf("%s/%s", rootPath, groupID)
+	th.Mux.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) {
+		th.TestMethod(t, r, "GET")
+		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
+
+		w.Header().Add("Content-Type", "application/json")
+		w.WriteHeader(http.StatusOK)
+
+		fmt.Fprintf(w, `
+{
+  "security_group": {
+    "description": "default",
+    "id": "b0e0d7dd-2ca4-49a9-ba82-c44a148b66a5",
+    "name": "default",
+    "rules": [
+      {
+        "from_port": 80,
+        "group": {
+          "tenant_id": "openstack",
+          "name": "default"
+        },
+        "ip_protocol": "TCP",
+        "to_port": 85,
+        "parent_group_id": "b0e0d7dd-2ca4-49a9-ba82-c44a148b66a5",
+        "ip_range": {
+						"cidr": "0.0.0.0"
+				},
+        "id": "ebe599e2-6b8c-457c-b1ff-a75e48f10923"
+      }
+    ],
+    "tenant_id": "openstack"
+  }
+}
+			`)
+	})
+}
diff --git a/openstack/compute/v2/extensions/secgroups/requests.go b/openstack/compute/v2/extensions/secgroups/requests.go
index 0c14716..b852883 100644
--- a/openstack/compute/v2/extensions/secgroups/requests.go
+++ b/openstack/compute/v2/extensions/secgroups/requests.go
@@ -49,3 +49,15 @@
 
 	return result
 }
+
+func Get(client *gophercloud.ServiceClient, id string) GetResult {
+	var result GetResult
+
+	_, result.Err = perigee.Request("GET", resourceURL(client, id), perigee.Options{
+		Results:     &result.Body,
+		MoreHeaders: client.AuthenticatedHeaders(),
+		OkCodes:     []int{200},
+	})
+
+	return result
+}
diff --git a/openstack/compute/v2/extensions/secgroups/requests_test.go b/openstack/compute/v2/extensions/secgroups/requests_test.go
index 311fc4d..0bc843c 100644
--- a/openstack/compute/v2/extensions/secgroups/requests_test.go
+++ b/openstack/compute/v2/extensions/secgroups/requests_test.go
@@ -8,7 +8,10 @@
 	"github.com/rackspace/gophercloud/testhelper/client"
 )
 
-const serverID = "{serverID}"
+const (
+	serverID = "{serverID}"
+	groupID  = "b0e0d7dd-2ca4-49a9-ba82-c44a148b66a5"
+)
 
 func TestList(t *testing.T) {
 	th.SetupHTTP()
@@ -103,3 +106,33 @@
 	}
 	th.AssertDeepEquals(t, expected, group)
 }
+
+func TestGet(t *testing.T) {
+	th.SetupHTTP()
+	defer th.TeardownHTTP()
+
+	mockGetGroupsResponse(t, groupID)
+
+	group, err := Get(client.ServiceClient(), groupID).Extract()
+	th.AssertNoErr(t, err)
+
+	expected := &SecurityGroup{
+		ID:          "b0e0d7dd-2ca4-49a9-ba82-c44a148b66a5",
+		Description: "default",
+		Name:        "default",
+		TenantID:    "openstack",
+		Rules: []Rule{
+			Rule{
+				FromPort:      80,
+				ToPort:        85,
+				IPProtocol:    "TCP",
+				IPRange:       IPRange{CIDR: "0.0.0.0"},
+				Group:         Group{TenantID: "openstack", Name: "default"},
+				ParentGroupID: "b0e0d7dd-2ca4-49a9-ba82-c44a148b66a5",
+				ID:            "ebe599e2-6b8c-457c-b1ff-a75e48f10923",
+			},
+		},
+	}
+
+	th.AssertDeepEquals(t, expected, group)
+}
diff --git a/openstack/compute/v2/extensions/secgroups/results.go b/openstack/compute/v2/extensions/secgroups/results.go
index 8f5477e..6418970 100644
--- a/openstack/compute/v2/extensions/secgroups/results.go
+++ b/openstack/compute/v2/extensions/secgroups/results.go
@@ -16,17 +16,24 @@
 }
 
 type Rule struct {
-	ID         string
-	FromPort   int     `mapstructure:"from_port"`
-	ToPort     int     `mapstructure:"to_port"`
-	IPProtocol string  `mapstructure:"ip_protocol"`
-	IPRange    IPRange `mapstructure:"ip_range"`
+	ID            string
+	FromPort      int     `mapstructure:"from_port"`
+	ToPort        int     `mapstructure:"to_port"`
+	IPProtocol    string  `mapstructure:"ip_protocol"`
+	IPRange       IPRange `mapstructure:"ip_range"`
+	ParentGroupID string  `mapstructure:"parent_group_id"`
+	Group         Group
 }
 
 type IPRange struct {
 	CIDR string
 }
 
+type Group struct {
+	TenantID string `mapstructure:"tenant_id"`
+	Name     string
+}
+
 // RolePage is a single page of a user Role collection.
 type SecurityGroupPage struct {
 	pagination.SinglePageBase
@@ -60,6 +67,10 @@
 	commonResult
 }
 
+type GetResult struct {
+	commonResult
+}
+
 func (r commonResult) Extract() (*SecurityGroup, error) {
 	if r.Err != nil {
 		return nil, r.Err
