A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://docs.aws.amazon.com/keyspaces/latest/devguide/security_iam_id-based-policy-examples.html below:

Amazon Keyspaces identity-based policy examples

Amazon Keyspaces identity-based policy examples

By default, IAM users and roles don't have permission to create or modify Amazon Keyspaces resources. They also can't perform tasks using the console, CQLSH, AWS CLI, or AWS API. An IAM administrator must create IAM policies that grant users and roles permission to perform specific API operations on the specified resources they need. The administrator must then attach those policies to the IAM users or groups that require those permissions.

To learn how to create an IAM identity-based policy using these example JSON policy documents, see Creating policies on the JSON tab in the IAM User Guide.

Policy best practices

Identity-based policies determine whether someone can create, access, or delete Amazon Keyspaces resources in your account. These actions can incur costs for your AWS account. When you create or edit identity-based policies, follow these guidelines and recommendations:

For more information about best practices in IAM, see Security best practices in IAM in the IAM User Guide.

Using the Amazon Keyspaces console

Amazon Keyspaces doesn't require specific permissions to access the Amazon Keyspaces console. You need at least read-only permissions to list and view details about the Amazon Keyspaces resources in your AWS account. If you create an identity-based policy that is more restrictive than the minimum required permissions, the console won't function as intended for entities (IAM users or roles) with that policy.

Two AWS managed policies are available to the entities for Amazon Keyspaces console access.

For more information about Amazon Keyspaces managed policies, see AWS managed policies for Amazon Keyspaces.

Allow users to view their own permissions

This example shows how you might create a policy that allows IAM users to view the inline and managed policies that are attached to their user identity. This policy includes permissions to complete this action on the console or programmatically using the AWS CLI or AWS API.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
Accessing Amazon Keyspaces tables

Note

To access user keyspaces and tables in Amazon Keyspaces, your IAM policy must include cassandra:Select permissions on system tables:

arn:${Partition}:cassandra:${Region}:${Account}:/keyspace/system*

This applies to the following scenarios:

System tables are read-only and cannot be modified.

The following is a sample policy that grants read-only (SELECT) access to the Amazon Keyspaces system tables. For all samples, replace the Region and account ID in the Amazon Resource Name (ARN) with your own.

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "cassandra:Select"
         ],
         "Resource":[
            "arn:aws:cassandra:aws-region:111122223333:/keyspace/system*"
         ]
      }
   ]
}

The following sample policy adds read-only access to the user table mytable in the keyspace mykeyspace.

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "cassandra:Select"
         ],
         "Resource":[
            "arn:aws:cassandra:aws-region:111122223333:/keyspace/mykeyspace/table/mytable",
            "arn:aws:cassandra:aws-region:111122223333:/keyspace/system*"
         ]
      }
   ]
}              

The following sample policy assigns read/write access to a user table and read access to the system tables.

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "cassandra:Select",
            "cassandra:Modify"
         ],
         "Resource":[
            "arn:aws:cassandra:aws-region:111122223333:/keyspace/mykeyspace/table/mytable",
            "arn:aws:cassandra:aws-region:111122223333:/keyspace/system*"
         ]
      }
   ]
}

The following sample policy allows a user to create tables in keyspace mykeyspace.

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "cassandra:Create",
            "cassandra:Select"
         ],
         "Resource":[
            "arn:aws:cassandra:aws-region:111122223333:/keyspace/mykeyspace/*",
            "arn:aws:cassandra:aws-region:111122223333:/keyspace/system*"
         ]
      }
   ]
}

The following sample policy assigns read access to the system tables, but restricts SELECT (read) and MODIFY (write) access to the user table mytable.

{
  "Version": "2012-10-17",
  "Statement": [
   {
     "Effect": "Allow",
     "Action": [
      "cassandra:Select"
     ],
     "Resource": [
      "arn:aws:cassandra:aws-region:111122223333:/keyspace/system*"
     ]
   },
   {
     "Effect": "Deny",
     "Action": [
      "cassandra:Select",
      "cassandra:Modify"
     ],
     "Resource": [
      "arn:aws:cassandra:aws-region:111122223333:/keyspace/mykeyspace/table/mytable"
     ]
   }
  ]
}

You can use conditions in your identity-based policy to control access to Amazon Keyspaces resources based on tags. These policies control visibility of the keyspaces and tables in the account. Note that tag-based permissions for system tables behave differently when requests are made using the AWS SDK compared to Cassandra Query Language (CQL) API calls via Cassandra drivers and developer tools.

The following example shows how you can create a policy that grants permissions to a user to view a table if the table's Owner contains the value of that user's user name. In this example you also give read access to the system tables.

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"ReadOnlyAccessTaggedTables",
         "Effect":"Allow",
         "Action":"cassandra:Select",
         "Resource":[
            "arn:aws:cassandra:aws-region:111122223333:/keyspace/mykeyspace/table/*",
            "arn:aws:cassandra:aws-region:111122223333:/keyspace/system*"
         ],
         "Condition":{
            "StringEquals":{
               "aws:ResourceTag/Owner":"${aws:username}"
            }
         }
      }
   ]
}

You can attach this policy to the IAM users in your account. If a user named richard-roe attempts to view an Amazon Keyspaces table, the table must be tagged Owner=richard-roe or owner=richard-roe. Otherwise, he is denied access. The condition tag key Owner matches both Owner and owner because condition key names are not case-sensitive. For more information, see IAM JSON policy elements: Condition in the IAM User Guide.

The following policy grants permissions to a user to create tables with tags if the table's Owner contains the value of that user's user name.

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
       { 
          "Sid": "CreateTagTableUser", 
          "Effect": "Allow", 
          "Action": [
              "cassandra:Create", 
              "cassandra:TagResource"
          ], 
          "Resource": "arn:aws:cassandra:aws-region:111122223333:/keyspace/mykeyspace/table/*", 
          "Condition":{
             "StringEquals":{
                "aws:RequestTag/Owner":"${aws:username}"
            }
         }
      }
   ]
}

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4