SlideShare une entreprise Scribd logo
1  sur  113
Télécharger pour lire hors ligne
© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Jeff Wierer, Senior AWS IAM Manager
October 2015
SEC305
How to Become an IAM Policy
Ninja in 60 Minutes or Less
What to expect from this session
• Know more about securing your AWS resources
• Get a deeper understanding of the policy language
• Tips and tricks for common use cases
• Debugging and testing policies
• Keep this a lively session via demos
• Amazon S3
• AWS Identity and Access Management (IAM)
• Amazon EC2
Limit Amazon EC2 instance types
Demo
Limit Amazon EC2 instance types
Demo
•
•
–
–
Limit Amazon EC2 instance types
Demo
•
•
–
–
The policy language
The policy language
Policy specification basics
JSON-formatted documents
Contain a statement (permissions)
that specifies:
• Which actions a principal can
perform
• Which resources can be accessed
{
"Statement":[{
"Effect":"effect",
"Principal":"principal",
"Action":"action",
"Resource":"arn",
"Condition":{
"condition":{
"key":"value" }
}
}
]
}
Principal
Action
Resource
Condition
You can have multiple statements and
each statement is comprised of PARC.
Principal – Examples
• An entity that is allowed or denied access to a resource
• Indicated by an Amazon Resource Name (ARN)
• With IAM policies, the principal element is implicit (i.e., the user, group, or role attached)
Principal – Examples
• An entity that is allowed or denied access to a resource
• Indicated by an Amazon Resource Name (ARN)
• With IAM policies, the principal element is implicit (i.e., the user, group, or role attached)
<!-- Everyone (anonymous users) -->
"Principal":"AWS":"*.*"
Principal – Examples
• An entity that is allowed or denied access to a resource
• Indicated by an Amazon Resource Name (ARN)
• With IAM policies, the principal element is implicit (i.e., the user, group, or role attached)
<!-- Everyone (anonymous users) -->
"Principal":"AWS":"*.*"
<!-- Specific account or accounts -->
"Principal":{"AWS":"arn:aws:iam::123456789012:root" }
"Principal":{"AWS":"123456789012"}
Principal – Examples
• An entity that is allowed or denied access to a resource
• Indicated by an Amazon Resource Name (ARN)
• With IAM policies, the principal element is implicit (i.e., the user, group, or role attached)
<!-- Everyone (anonymous users) -->
"Principal":"AWS":"*.*"
<!-- Specific account or accounts -->
"Principal":{"AWS":"arn:aws:iam::123456789012:root" }
"Principal":{"AWS":"123456789012"}
<!-- Individual IAM user -->
"Principal":"AWS":"arn:aws:iam::123456789012:user/username"
Principal – Examples
• An entity that is allowed or denied access to a resource
• Indicated by an Amazon Resource Name (ARN)
• With IAM policies, the principal element is implicit (i.e., the user, group, or role attached)
<!-- Everyone (anonymous users) -->
"Principal":"AWS":"*.*"
<!-- Specific account or accounts -->
"Principal":{"AWS":"arn:aws:iam::123456789012:root" }
"Principal":{"AWS":"123456789012"}
<!-- Individual IAM user -->
"Principal":"AWS":"arn:aws:iam::123456789012:user/username"
<!-- Federated user (using web identity federation) -->
"Principal":{"Federated":"www.amazon.com"}
"Principal":{"Federated":"graph.facebook.com"}
"Principal":{"Federated":"accounts.google.com"}
Principal – Examples
• An entity that is allowed or denied access to a resource
• Indicated by an Amazon Resource Name (ARN)
• With IAM policies, the principal element is implicit (i.e., the user, group, or role attached)
<!-- Everyone (anonymous users) -->
"Principal":"AWS":"*.*"
<!-- Specific account or accounts -->
"Principal":{"AWS":"arn:aws:iam::123456789012:root" }
"Principal":{"AWS":"123456789012"}
<!-- Individual IAM user -->
"Principal":"AWS":"arn:aws:iam::123456789012:user/username"
<!-- Federated user (using web identity federation) -->
"Principal":{"Federated":"www.amazon.com"}
"Principal":{"Federated":"graph.facebook.com"}
"Principal":{"Federated":"accounts.google.com"}
<!-- Specific role -->
"Principal":{"AWS":"arn:aws:iam::123456789012:role/rolename"}
Principal – Examples
• An entity that is allowed or denied access to a resource
• Indicated by an Amazon Resource Name (ARN)
• With IAM policies, the principal element is implicit (i.e., the user, group, or role attached)
<!-- Everyone (anonymous users) -->
"Principal":"AWS":"*.*"
<!-- Specific account or accounts -->
"Principal":{"AWS":"arn:aws:iam::123456789012:root" }
"Principal":{"AWS":"123456789012"}
<!-- Individual IAM user -->
"Principal":"AWS":"arn:aws:iam::123456789012:user/username"
<!-- Federated user (using web identity federation) -->
"Principal":{"Federated":"www.amazon.com"}
"Principal":{"Federated":"graph.facebook.com"}
"Principal":{"Federated":"accounts.google.com"}
<!-- Specific role -->
"Principal":{"AWS":"arn:aws:iam::123456789012:role/rolename"}
<!-- Specific service -->
"Principal":{"Service":"ec2.amazonaws.com"}
Principal – Examples
• An entity that is allowed or denied access to a resource
• Indicated by an Amazon Resource Name (ARN)
• With IAM policies, the principal element is implicit (i.e., the user, group, or role attached)
<!-- Everyone (anonymous users) -->
"Principal":"AWS":"*.*"
<!-- Specific account or accounts -->
"Principal":{"AWS":"arn:aws:iam::123456789012:root" }
"Principal":{"AWS":"123456789012"}
<!-- Individual IAM user -->
"Principal":"AWS":"arn:aws:iam::123456789012:user/username"
<!-- Federated user (using web identity federation) -->
"Principal":{"Federated":"www.amazon.com"}
"Principal":{"Federated":"graph.facebook.com"}
"Principal":{"Federated":"accounts.google.com"}
<!-- Specific role -->
"Principal":{"AWS":"arn:aws:iam::123456789012:role/rolename"}
<!-- Specific service -->
"Principal":{"Service":"ec2.amazonaws.com"}
Replace
with your
account
number
Action – Examples
• Describes the type of access that should be allowed or denied
• You can find these in the docs or use the policy editor to get a drop-down list
• Statements must include either an Action or NotAction element
Action – Examples
• Describes the type of access that should be allowed or denied
• You can find these in the docs or use the policy editor to get a drop-down list
• Statements must include either an Action or NotAction element
<!-- EC2 action -->
"Action":"ec2:StartInstances"
<!-- IAM action -->
"Action":"iam:ChangePassword"
<!-- S3 action -->
"Action":"s3:GetObject"
Action – Examples
• Describes the type of access that should be allowed or denied
• You can find these in the docs or use the policy editor to get a drop-down list
• Statements must include either an Action or NotAction element
<!-- EC2 action -->
"Action":"ec2:StartInstances"
<!-- IAM action -->
"Action":"iam:ChangePassword"
<!-- S3 action -->
"Action":"s3:GetObject"
<!-- Specify multiple values for the Action element-->
"Action":["sqs:SendMessage","sqs:ReceiveMessage"]
Action – Examples
• Describes the type of access that should be allowed or denied
• You can find these in the docs or use the policy editor to get a drop-down list
• Statements must include either an Action or NotAction element
<!-- EC2 action -->
"Action":"ec2:StartInstances"
<!-- IAM action -->
"Action":"iam:ChangePassword"
<!-- S3 action -->
"Action":"s3:GetObject"
<!-- Specify multiple values for the Action element-->
"Action":["sqs:SendMessage","sqs:ReceiveMessage"]
<--Use wildcards (* or ?) as part of the action name. This would cover Create/Delete/List/Update-->
"Action":"iam:*AccessKey*"
Understanding NotAction
• Lets you specify an exception to a list of actions
• Could result in shorter policies than using Action and denying many actions
• Example: Let’s say you want to allow everything but IAM APIs
Understanding NotAction
• Lets you specify an exception to a list of actions
• Could result in shorter policies than using Action and denying many actions
• Example: Let’s say you want to allow everything but IAM APIs
{
"Version": "2012-10-17",
"Statement": [ {
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
}
]
}
Understanding NotAction
• Lets you specify an exception to a list of actions
• Could result in shorter policies than using Action and denying many actions
• Example: Let’s say you want to allow everything but IAM APIs
{
"Version": "2012-10-17",
"Statement": [ {
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
}
]
}
or
Understanding NotAction
• Lets you specify an exception to a list of actions
• Could result in shorter policies than using Action and denying many actions
• Example: Let’s say you want to allow everything but IAM APIs
{
"Version": "2012-10-17",
"Statement": [ {
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": "iam:*",
"Resource": "*"
}
]
}
or
Understanding NotAction
• Lets you specify an exception to a list of actions
• Could result in shorter policies than using Action and denying many actions
• Example: Let’s say you want to allow everything but IAM APIs
{
"Version": "2012-10-17",
"Statement": [ {
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": "iam:*",
"Resource": "*"
}
]
}
or
Is there a
difference?
Understanding NotAction
• Lets you specify an exception to a list of actions
• Could result in shorter policies than using Action and denying many actions
• Example: Let’s say you want to allow everything but IAM APIs
{
"Version": "2012-10-17",
"Statement": [ {
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": "iam:*",
"Resource": "*"
}
]
}
or
This is not a Deny. A user could still have a
separate policy that grants IAM:*
Understanding NotAction
• Lets you specify an exception to a list of actions
• Could result in shorter policies than using Action and denying many actions
• Example: Let’s say you want to allow everything but IAM APIs
{
"Version": "2012-10-17",
"Statement": [ {
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": "iam:*",
"Resource": "*"
}
]
}
or
This is not a Deny. A user could still have a
separate policy that grants IAM:*
If you want to prevent the user from ever being
able to call IAM APIs, use an explicit deny.
Resource – Examples
• The object or objects that are being requested
• Statements must include either a Resource or a NotResource element
Resource – Examples
• The object or objects that are being requested
• Statements must include either a Resource or a NotResource element
<-- S3 Bucket -->
"Resource":"arn:aws:s3:::my_corporate_bucket/*"
<-- SQS queue-->
"Resource":"arn:aws:sqs:us-west-2:123456789012:queue1"
<-- Multiple DynamoDB tables -->
"Resource":["arn:aws:dynamodb:us-west-2:123456789012:table/books_table",
"arn:aws:dynamodb:us-west-2:123456789012:table/magazines_table"]
<-- All EC2 instances for an account in a region -->
"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*"
Conditions
• Optional criteria that must evaluate to
true for the policy to evaluate as true
(ex: restrict to an IP address range)
Condition element
Conditions
Condition element
Condition 1:
Key1: Value1A
Condition 2:
Key3: Value3A
• Optional criteria that must evaluate to true
for the policy to evaluate as true
• Ex: restrict to an IP address range
• Can contain multiple conditions
Conditions
• Optional criteria that must evaluate to true
for the policy to evaluate as true
• Ex: restrict to an IP address range
• Can contain multiple conditions
• Condition keys can contain multiple values
Condition element
Condition 1:
Key1: Value1A
Condition 2:
Key3: Value3A
Key1: Value1A Value1B Value 1C
Conditions
• Optional criteria that must evaluate to true
for the policy to evaluate as true
• Ex: restrict to an IP address range
• Can contain multiple conditions
• Condition keys can contain multiple values
• If a single condition includes multiple
values for one key, the condition is
evaluated using logical OR
•
Condition element
Condition 1:
Key1: Value1A
Condition 2:
Key3: Value3A
OR ORKey1: Value1A Value1B Value 1C
Conditions
• Optional criteria that must evaluate to true
for the policy to evaluate as true
• Ex: restrict to an IP address range
• Can contain multiple conditions
• Condition keys can contain multiple values
• If a single condition includes multiple
values for one key, the condition is
evaluated using logical OR
• Multiple conditions (or multiple keys in a
single condition): the conditions are
evaluated using logical AND
Condition element
Condition 1:
Key1: Value1A
Condition 2:
Key3: Value3A
AND
AND
Key2: Value2A OR Value2B
OR ORKey1: Value1A Value1B Value 1C
Condition example
"Condition" : {
"DateGreaterThan" : {"aws:CurrentTime" : "2015-10-08T12:00:00Z"},
"DateLessThan": {"aws:CurrentTime" : "2015-10-08T15:00:00Z"},
"IpAddress" : {"aws:SourceIp" : ["192.0.2.0/24", "203.0.113.0/24"]}
}
• Allows a user to access a resource under the following conditions:
• The time is after 12:00 P.M. on 10/8/2015 AND
• The time is before 3:00 P.M. on 10/8/2015 AND
• The request comes from an IP address in the 192.0.2.0 /24 OR 203.0.113.0 /24
range
All of these conditions must be met in order for the statement to evaluate to TRUE.
AND
OR
What if you wanted to restrict access to a time frame and IP address range?
Policy variables
Policy variables
•
–
–
–
–
–
•
–
–
•
–
–
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::myBucket"],
"Condition":
{"StringLike":
{"s3:prefix":["home/${aws:username}/*"]}
}
},
{
"Effect":"Allow",
"Action":["s3:*"],
"Resource": ["arn:aws:s3:::myBucket/home/${aws:username}",
"arn:aws:s3:::myBucket/home/${aws:username}/*"]
}
]
}
The anatomy of a policy with variables
Grants a user access to a home directory in S3 that can be accessed programmatically
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::myBucket"],
"Condition":
{"StringLike":
{"s3:prefix":["home/${aws:username}/*"]}
}
},
{
"Effect":"Allow",
"Action":["s3:*"],
"Resource": ["arn:aws:s3:::myBucket/home/${aws:username}",
"arn:aws:s3:::myBucket/home/${aws:username}/*"]
}
]
}
The anatomy of a policy with variables
Version is required
Grants a user access to a home directory in S3 that can be accessed programmatically
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::myBucket"],
"Condition":
{"StringLike":
{"s3:prefix":["home/${aws:username}/*"]}
}
},
{
"Effect":"Allow",
"Action":["s3:*"],
"Resource": ["arn:aws:s3:::myBucket/home/${aws:username}",
"arn:aws:s3:::myBucket/home/${aws:username}/*"]
}
]
}
The anatomy of a policy with variables
Version is required
Variable in conditions
Grants a user access to a home directory in S3 that can be accessed programmatically
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::myBucket"],
"Condition":
{"StringLike":
{"s3:prefix":["home/${aws:username}/*"]}
}
},
{
"Effect":"Allow",
"Action":["s3:*"],
"Resource": ["arn:aws:s3:::myBucket/home/${aws:username}",
"arn:aws:s3:::myBucket/home/${aws:username}/*"]
}
]
}
The anatomy of a policy with variables
Version is required
Variable in conditions
Variable in resource ARNs
Grants a user access to a home directory in S3 that can be accessed programmatically
Managing your policies
Managing your policies
IAM policies
• Managed policies (newer way)
• Can be attached to multiple users, groups, and roles
• AWS managed policies: Created and maintained by AWS
• Customer managed policies: Created and maintained by you
• Up to 5K per policy
• Up to 5 versions of a policy so you can roll back to a prior version
• You can attach 10 managed policies per user, group, or role
• You can limit who can attach which managed policies
• Inline policies (older way)
• You create and embed directly in a single user, group, or role
• Variable policy size (2K per user, 5K per group, 10K per role)
Resource-based policies
IAM policies live with:
• IAM users
• IAM groups
• IAM roles
Some services allow storing policy
with resources:
• S3 (bucket policy)
• Amazon Glacier (vault policy)
• Amazon SNS (topic policy)
• Amazon SQS (queue policy)
{
"Statement":
{
"Effect": "Allow",
"Principal": {"AWS": "111122223333"},
"Action": "sqs:SendMessage",
"Resource":
"arn:aws:sqs:us-east-1:444455556666:queue1"
}
}
Resource-based policies
IAM policies live with:
• IAM users
• IAM groups
• IAM roles
Some services allow storing policy
with resources:
• S3 (bucket policy)
• Amazon Glacier (vault policy)
• Amazon SNS (topic policy)
• Amazon SQS (queue policy)
{
"Statement":
{
"Effect": "Allow",
"Principal": {"AWS": "111122223333"},
"Action": "sqs:SendMessage",
"Resource":
"arn:aws:sqs:us-east-1:444455556666:queue1"
}
}
Principal required here
Resource-based policies
IAM policies live with:
• IAM users
• IAM groups
• IAM roles
Some services allow storing policy
with resources:
• S3 (bucket policy)
• Amazon Glacier (vault policy)
• Amazon SNS (topic policy)
• Amazon SQS (queue policy)
{
"Statement":
{
"Effect": "Allow",
"Principal": {"AWS": "111122223333"},
"Action": "sqs:SendMessage",
"Resource":
"arn:aws:sqs:us-east-1:444455556666:queue1"
}
}
Principal required here
Managed policies
apply only to users,
groups, and roles—
not resources
Resource-based policies
IAM policies live with:
• IAM users
• IAM groups
• IAM roles
Some services allow storing policy
with resources:
• S3 (bucket policy)
• Amazon Glacier (vault policy)
• Amazon SNS (topic policy)
• Amazon SQS (queue policy)
{
"Statement":
{
"Effect": "Allow",
"Principal": {"AWS": "111122223333"},
"Action": "sqs:SendMessage",
"Resource":
"arn:aws:sqs:us-east-1:444455556666:queue1"
}
}
Principal required here
Enough already…
Let’s look at some examples
Enough already…
Let’s look at some examples
Creating a home directory using S3
Demo
Creating a home directory using S3
Demo
•
–
–
•
–
–
–
Giving a user a home directory from the S3 console
{
"Version": "2012-10-17",
]
}
Giving a user a home directory from the S3 console
{
"Version": "2012-10-17",
"Statement": [
{"Sid": "AllowGroupToSeeBucketListInTheManagementConsole",
"Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*"]},
{"Sid": "AllowRootLevelListingOfThisBucketAndHomePrefix",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::myBucket"],
"Condition":{"StringEquals":{"s3:prefix":["","home/"],"s3:delimiter":["/"]}}},
]
}
• Necessary to
access the
S3 console.
Giving a user a home directory from the S3 console
{
"Version": "2012-10-17",
"Statement": [
{"Sid": "AllowGroupToSeeBucketListInTheManagementConsole",
"Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*"]},
{"Sid": "AllowRootLevelListingOfThisBucketAndHomePrefix",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::myBucket"],
"Condition":{"StringEquals":{"s3:prefix":["","home/"],"s3:delimiter":["/"]}}},
{"Sid": "AllowListBucketofASpecificUserPrefix",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::myBucket"],
"Condition":{"StringLike":{"s3:prefix":["home/${aws:username}/*"]}}},
]
}
• Allows listing all
objects in a folder
and its
subfolders.
Giving a user a home directory from the S3 console
{
"Version": "2012-10-17",
"Statement": [
{"Sid": "AllowGroupToSeeBucketListInTheManagementConsole",
"Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*"]},
{"Sid": "AllowRootLevelListingOfThisBucketAndHomePrefix",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::myBucket"],
"Condition":{"StringEquals":{"s3:prefix":["","home/"],"s3:delimiter":["/"]}}},
{"Sid": "AllowListBucketofASpecificUserPrefix",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::myBucket"],
"Condition":{"StringLike":{"s3:prefix":["home/${aws:username}/*"]}}},
{"Sid":"AllowUserFullAccesstoJustSpecificUserPrefix",
"Action":["s3:*"],
"Effect":"Allow",
"Resource": ["arn:aws:s3:::myBucket/home/${aws:username}",
"arn:aws:s3:::myBucket/home/${aws:username}/*"]}
]
}
• Allows modifying
objects in the
folder and
subfolders.
Creating a “limited” IAM administrator
Demo
Creating a “limited” IAM administrator
Demo
•
–
Creating a “limited” IAM administrator
Demo
•
–
•
–
– Grant admin access to the IAM console to be able to
create users and generate access keys.
–
Create a “limited” IAM administrator
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "ManageUsersPermissions",
"Effect": "Allow",
"Action": ["iam:ChangePasword", "iam:CreateAccessKey", "iam:CreateLoginProfile",
"iam:CreateUser", "iam:DeleteAccessKey", "iam:DeleteLoginProfile",
"iam:DeleteUser", "iam:UpdateAccessKey", "iam:ListAttachedUserPolicies",
"iam:ListPolicies"],
"Resource": "*"
},
{
"Sid": "LimitedAttachmentPermissions",
"Effect": "Allow",
"Action": ["iam:AttachUserPolicy","iam:DetachUserPolicy"],
"Resource": "*",
"Condition": {
"ArnEquals": {
"iam:PolicyArn": [
"arn:aws:iam::123456789012:policy/reInvent2015_S3_Home_Folder",
"arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess"
]
}
}
}
]
}
See AWS Security Blog post http://amzn.to/1Hf2XRl
Create a “limited” IAM administrator
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "ManageUsersPermissions",
"Effect": "Allow",
"Action": ["iam:ChangePasword", "iam:CreateAccessKey", "iam:CreateLoginProfile",
"iam:CreateUser", "iam:DeleteAccessKey", "iam:DeleteLoginProfile",
"iam:DeleteUser", "iam:UpdateAccessKey", "iam:ListAttachedUserPolicies",
"iam:ListPolicies"],
"Resource": "*"
},
{
"Sid": "LimitedAttachmentPermissions",
"Effect": "Allow",
"Action": ["iam:AttachUserPolicy","iam:DetachUserPolicy"],
"Resource": "*",
"Condition": {
"ArnEquals": {
"iam:PolicyArn": [
"arn:aws:iam::123456789012:policy/reInvent2015_S3_Home_Folder",
"arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess"
]
}
}
}
]
}
See AWS Security Blog post http://amzn.to/1Hf2XRl
• Allows creating
users, managing
keys, and setting
passwords.
Create a “limited” IAM administrator
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "ManageUsersPermissions",
"Effect": "Allow",
"Action": ["iam:ChangePasword", "iam:CreateAccessKey", "iam:CreateLoginProfile",
"iam:CreateUser", "iam:DeleteAccessKey", "iam:DeleteLoginProfile",
"iam:DeleteUser", "iam:UpdateAccessKey", "iam:ListAttachedUserPolicies",
"iam:ListPolicies"],
"Resource": "*"
},
{
"Sid": "LimitedAttachmentPermissions",
"Effect": "Allow",
"Action": ["iam:AttachUserPolicy","iam:DetachUserPolicy"],
"Resource": "*",
"Condition": {
"ArnEquals": {
"iam:PolicyArn": [
"arn:aws:iam::123456789012:policy/reInvent2015_S3_Home_Folder",
"arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess"
]
}
}
}
]
}
See AWS Security Blog post http://amzn.to/1Hf2XRl
• Limits attaching
only these two
policies.
Grant a user access to the IAM console
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "ViewListOfAllUsers",
"Action": "iam:ListUsers",
"Effect": "Allow",
"Resource": "arn:aws:iam::123456789012:user/*"
},
{
"Sid": "AllowAdmintoAccessUser",
"Effect": "Allow",
"Action": ["iam:GetUser","iam:GetLoginProfile",
"iam:ListGroupsForUser","iam:ListAccessKeys"],
"Resource": "arn:aws:iam::123456789012:user/${aws:username}"
}
]
}
• Underneath the covers, the
IAM console calls these
APIs to view user settings.
• The user will be able to view
details about all users.
• Doesn’t enable
adding/removing MFA.
EC2 resource-level permissions
•
•
•
EC2 resource-level permissions
{
"Statement": [{
"Effect": "Allow",
"Action": ["ec2:TerminateInstances"],
"Resource":"*"
}
]
}
EC2 policies before resource-level permissions
{
"Statement": [{
"Effect": "Allow",
"Action": ["ec2:TerminateInstances"],
"Resource":"*"
}
]
}
Tell me there is
a better way.
EC2 policies before resource-level permissions
{
"Statement": [{
"Effect": "Allow",
"Action": ["ec2:TerminateInstances"],
"Resource":
"arn:aws:ec2:us-east-1:123456789012:instance/i-abc12345"
}
]
}
EC2 policies after resource-level permissions
EC2 policies after resource-level permissions
{
"Statement": [{
"Effect": "Allow",
"Action": ["ec2:TerminateInstances"],
"Resource":
"arn:aws:ec2:us-east-1:123456789012:instance/*"
}
]
}
EC2 policies after resource-level permissions
{
"Statement": [{
"Effect": "Allow",
"Action": ["ec2:TerminateInstances"],
"Resource":
"arn:aws:ec2:us-east-1:123456789012:instance/*",
"Condition": {
"StringEquals": {"ec2:ResourceTag/department": "dev"}
}
}
]
}
Supported EC2 resource types
• Customer
gateway
• DHCP options
set
• Image
• Instance
• Instance profile
• Internet gateway
• Key pair
• Network ACL
• Network
interface
• Placement group
• Route table
• Security group
• Snapshot
• Subnet
• Volume
• VPC
• VPC peering
connection
Supports many different resource types, including:
Supported EC2 actions Note: This is only a subset of all possible EC2 actions.
Type of Resource Actions
EC2 instances RebootInstances, RunInstance, StartInstances, StopInstances, TerminateInstances,
AttachClassicLinkVpc, AttachVolume, DetachClassicLinkVpc, DetachVolume,
Customer gateway DeleteCustomerGateway
DHCP options sets DeleteDhcpOptions
Internet gateways DeleteInternetGateway
Network ACLs DeleteNetworkAcl, DeleteNetworkAclEntry
Route tables DeleteRoute, DeleteRouteTable
Security groups AuthorizeSecurityGroupEgress, AuthorizeSecurityGroupIngress,
DeleteSecurityGroup, RevokeSecurityGroupEgress, RevokeSecurityGroupIngress,
AttachClassicLinkVpc, RunInstances
Volumes AttachVolume, DeleteVolume, DetachVolume, RunInstances
VPC peering
connections
AcceptVpcPeeringConnection, CreateVpcPeeringConnection,
DeleteVpcPeeringConnection, RejectVpcPeeringConnection,
DisableVpcClassicLink, EnableVpcClassicLink
Accurate as of 10/1/2015
Categorize your EC2 resources
Use tags as a resource attribute
EC2 resource-level permissions
Demo
EC2 resource-level permissions
Demo
•
•
EC2 resource-level permissions
Demo
•
•
–
–
–
Locking down access to EC2 instances
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "THISALLOWSEC2READACCESS",
"Effect": "Allow",
"Action": ["ec2:Describe*","elasticloadbalancing:Describe*",
"cloudwatch:ListMetrics","cloudwatch:GetMetricStatistics",
"cloudwatch:Describe*","autoscaling:Describe*"],
"Resource": "*"
},
{
"Sid": "THISLIMITSACCESSTOOWNINSTANCES",
"Effect": "Allow",
"Action": ["ec2:RebootInstances","ec2:StartInstances",
"ec2:StopInstances","ec2:TerminateInstances"],
"Resource":"arn:aws:ec2:us-east-1:123456789012:instance/*",
"Condition": {"StringEquals":
{"ec2:ResourceTag/Owner": "${aws:username}"}}
}
]
}
Locking down access to EC2 instances
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "THISALLOWSEC2READACCESS",
"Effect": "Allow",
"Action": ["ec2:Describe*","elasticloadbalancing:Describe*",
"cloudwatch:ListMetrics","cloudwatch:GetMetricStatistics",
"cloudwatch:Describe*","autoscaling:Describe*"],
"Resource": "*"
},
{
"Sid": "THISLIMITSACCESSTOOWNINSTANCES",
"Effect": "Allow",
"Action": ["ec2:RebootInstances","ec2:StartInstances",
"ec2:StopInstances","ec2:TerminateInstances"],
"Resource":"arn:aws:ec2:us-east-1:123456789012:instance/*",
"Condition": {"StringEquals":
{"ec2:ResourceTag/Owner": "${aws:username}"}}
}
]
}
Version is required here
because we’re using variables
Locking down access to EC2 instances
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "THISALLOWSEC2READACCESS",
"Effect": "Allow",
"Action": ["ec2:Describe*","elasticloadbalancing:Describe*",
"cloudwatch:ListMetrics","cloudwatch:GetMetricStatistics",
"cloudwatch:Describe*","autoscaling:Describe*"],
"Resource": "*"
},
{
"Sid": "THISLIMITSACCESSTOOWNINSTANCES",
"Effect": "Allow",
"Action": ["ec2:RebootInstances","ec2:StartInstances",
"ec2:StopInstances","ec2:TerminateInstances"],
"Resource":"arn:aws:ec2:us-east-1:123456789012:instance/*",
"Condition": {"StringEquals":
{"ec2:ResourceTag/Owner": "${aws:username}"}}
}
]
}
Version is required here
because we’re using variables
Allows seeing everything from
the EC2 console
Locking down access to EC2 instances
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "THISALLOWSEC2READACCESS",
"Effect": "Allow",
"Action": ["ec2:Describe*","elasticloadbalancing:Describe*",
"cloudwatch:ListMetrics","cloudwatch:GetMetricStatistics",
"cloudwatch:Describe*","autoscaling:Describe*"],
"Resource": "*"
},
{
"Sid": "THISLIMITSACCESSTOOWNINSTANCES",
"Effect": "Allow",
"Action": ["ec2:RebootInstances","ec2:StartInstances",
"ec2:StopInstances","ec2:TerminateInstances"],
"Resource":"arn:aws:ec2:us-east-1:123456789012:instance/*",
"Condition": {"StringEquals":
{"ec2:ResourceTag/Owner": "${aws:username}"}}
}
]
}
Version is required here
because we’re using variables
Only allowed if this tag
condition is true
Allows seeing everything from
the EC2 console
Locking down access to EC2 instances
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "THISALLOWSEC2READACCESS",
"Effect": "Allow",
"Action": ["ec2:Describe*","elasticloadbalancing:Describe*",
"cloudwatch:ListMetrics","cloudwatch:GetMetricStatistics",
"cloudwatch:Describe*","autoscaling:Describe*"],
"Resource": "*"
},
{
"Sid": "THISLIMITSACCESSTOOWNINSTANCES",
"Effect": "Allow",
"Action": ["ec2:RebootInstances","ec2:StartInstances",
"ec2:StopInstances","ec2:TerminateInstances"],
"Resource":"arn:aws:ec2:us-east-1:123456789012:instance/*",
"Condition": {"StringEquals":
{"ec2:ResourceTag/Owner": "${aws:username}"}}
}
]
}
Version is required here
because we’re using variables
Only allowed if this tag
condition is true
Specify the tag key and value
here
Allows seeing everything from
the EC2 console
Limit EC2 instance types
Demo
Limit EC2 instance types
Demo
•
Limit EC2 instance types
Demo
•
•
–
–
–
Locking down access to instance types
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"NotAction": ["iam:*","ec2:RunInstances"],
"Resource": "*"},
{
"Effect": "Allow",
"Action": "ec2:RunInstances",
"NotResource": [
"arn:aws:ec2:us-east-1:012345678912:instance/*",
"arn:aws:ec2:eu-west-1:012345678912:instance/*"]},
{
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:us-east-1:012345678912:instance/*",
"arn:aws:ec2:eu-west-1:012345678912:instance/*"],
"Condition": {
"StringLike": {"ec2:InstanceType": ["t1.*","t2.*","m3.*"]}
}
}
]
}
Include all services/actions you
want to exclude!
Grants access to everything
you need to launch an
instance, except the actual
instance
Lock down types here
Take advantage of IfExists conditional operator
• Many condition keys only exist for certain resource
types.
• If you test for a nonexistent key, your policy will fail to
evaluate (i.e., access denied).
• You can add IfExists at the end of any condition
operator except the Null condition (e.g.,
StringLikeIfExists).
• Allows you to create policies that “don’t care” if the key is
not present.
StringNotLikeIfExists Example
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": "arn:aws:ec2:*:012345678901:instance/*",
"Condition": {
"StringNotLikeIfExists": {
"ec2:InstanceType": ["t1.*", "t2.*", "m3.*"]
}
}
}
]
}
StringNotLikeIfExists Example
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": "arn:aws:ec2:*:012345678901:instance/*",
"Condition": {
"StringNotLikeIfExists": {
"ec2:InstanceType": ["t1.*", "t2.*", "m3.*"]
}
}
}
]
}
For all instances in all regions
StringNotLikeIfExists Example
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": "arn:aws:ec2:*:012345678901:instance/*",
"Condition": {
"StringNotLikeIfExists": {
"ec2:InstanceType": ["t1.*", "t2.*", "m3.*"]
}
}
}
]
}
Only apply this condition if this
InstanceType key exists
For all instances in all regions
Testing and debugging
Testing and debugging
•
•
•
Policy editor
Policy validation checks:
• JSON errors
• Policy grammar errors
Policy formatting:
• On-demand
• Autoformatting
Policy simulator
Decoding the EC2 authorization message
• Additional information about the authorization status of a request
Decoding the EC2 authorization message
• The decoded message includes:
– Whether the request was denied due
to an explicit deny or absence of an
explicit allow.
– The principal who made the request.
– The requested action.
– The requested resource.
– The values of condition keys in the
context of the user's request.
• Additional information about the authorization status of a request
Output
Decoding the EC2 authorization message
• The decoded message includes:
– Whether the request was denied due
to an explicit deny or absence of an
explicit allow.
– The principal who made the request.
– The requested action.
– The requested resource.
– The values of condition keys in the
context of the user's request.
The message is encoded because the details of the
authorization status can constitute privileged information!
• Additional information about the authorization status of a request
Output
Decoding the EC2 authorization message
Demo
Decoding the EC2 authorization message
Demo
•
•
–
–
–
–
Policy enforcement
Policy enforcement
Policy enforcement
Decision
starts at Deny
1
Policy enforcement
Decision
starts at Deny
1
• AWS retrieves all policies
associated with the user and
resource.
• Only policies that match the action
and conditions are evaluated.
Policy enforcement
Decision
starts at Deny
1
Evaluate all
applicable
policies
2
• AWS retrieves all policies
associated with the user and
resource.
• Only policies that match the action
and conditions are evaluated.
Policy enforcement
Decision
starts at Deny
1
Evaluate all
applicable
policies
2
Is there an
explicit
deny?
3
• AWS retrieves all policies
associated with the user and
resource.
• Only policies that match the action
and conditions are evaluated.
Policy enforcement
Final decision =“deny”
(explicit deny)
Yes
Decision
starts at Deny
1
Evaluate all
applicable
policies
2
Is there an
explicit
deny?
3
• AWS retrieves all policies
associated with the user and
resource.
• Only policies that match the action
and conditions are evaluated.
• If a policy statement
has a deny, it trumps
all other policy
statements.
Policy enforcement
Final decision =“deny”
(explicit deny)
Yes
No Is there an
Allow?
4
Decision
starts at Deny
1
Evaluate all
applicable
policies
2
Is there an
explicit
deny?
3
• AWS retrieves all policies
associated with the user and
resource.
• Only policies that match the action
and conditions are evaluated.
• If a policy statement
has a deny, it trumps
all other policy
statements.
Policy enforcement
Final decision =“deny”
(explicit deny)
Yes
Final decision =“allow”
Yes
No Is there an
Allow?
4
Decision
starts at Deny
1
Evaluate all
applicable
policies
2
Is there an
explicit
deny?
3
• AWS retrieves all policies
associated with the user and
resource.
• Only policies that match the action
and conditions are evaluated.
• If a policy statement
has a deny, it trumps
all other policy
statements.
• Access is granted
if there is an
explicit allow and
no deny.
Policy enforcement
Final decision =“deny”
(explicit deny)
Yes
Final decision =“allow”
Yes
No Is there an
Allow?
4
Decision
starts at Deny
1
Evaluate all
applicable
policies
2
Is there an
explicit
deny?
3
No Final decision =“deny”
(default deny)
5
• AWS retrieves all policies
associated with the user and
resource.
• Only policies that match the action
and conditions are evaluated.
• If a policy statement
has a deny, it trumps
all other policy
statements.
• Access is granted
if there is an
explicit allow and
no deny.
• By default, an
implicit (default)
deny is returned.
Summary
• IAM provides access control for your AWS account.
• The policy language authorizes that access.
• All applicable policies are evaluated.
• Users are denied access by default.
• A deny always trumps an allow.
• Use policy variables and remember the version!
• Keep in mind which EC2 actions or
resources are currently supported.
Additional resources
• Documentation
• http://aws.amazon.com/documentation/iam/
• http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api-
permissions.html
• AWS Security Blog (blogs.aws.amazon.com/security)
• http://blogs.aws.amazon.com/security/post/Tx2KPWZJJ4S26H6/Demystifying-
EC2-Resource-Level-Permissions
• http://blogs.aws.amazon.com/security/post/Tx29ZC3VE9SQGQM/Granting-
Users-Permission-to-Work-in-the-Amazon-EC2-Console
• http://aws.amazon.com/iam
• https://forums.aws.amazon.com/forum.jspa?forumID=76
• Twitter: @AWSIdentity
Related sessions
Wednesday, 1:30–2:30 P.M.
SEC302 – IAM Best Practices to Live By
Thursday, 1:30–2:30 P.M.
SEC307 – A Progressive Journey Through AWS IAM
Federation Options: From Roles to SAML to Custom
Identity Brokers
Remember to complete
your evaluations!
Thank you!

Contenu connexe

Tendances

Designing security & governance via AWS Control Tower & Organizations - SEC30...
Designing security & governance via AWS Control Tower & Organizations - SEC30...Designing security & governance via AWS Control Tower & Organizations - SEC30...
Designing security & governance via AWS Control Tower & Organizations - SEC30...Amazon Web Services
 
AWS IAM policies in plain english
AWS IAM policies in plain english AWS IAM policies in plain english
AWS IAM policies in plain english Bogdan Naydenov
 
AWS re:Invent 2016: Workshop: Secure Your Web Application with AWS WAF and Am...
AWS re:Invent 2016: Workshop: Secure Your Web Application with AWS WAF and Am...AWS re:Invent 2016: Workshop: Secure Your Web Application with AWS WAF and Am...
AWS re:Invent 2016: Workshop: Secure Your Web Application with AWS WAF and Am...Amazon Web Services
 
HSBC and AWS Day - AWS foundations
HSBC and AWS Day - AWS foundationsHSBC and AWS Day - AWS foundations
HSBC and AWS Day - AWS foundationsAmazon Web Services
 
Amazon GuardDuty Threat Detection and Remediation
Amazon GuardDuty Threat Detection and RemediationAmazon GuardDuty Threat Detection and Remediation
Amazon GuardDuty Threat Detection and RemediationAmazon Web Services
 
(SEC318) AWS CloudTrail Deep Dive
(SEC318) AWS CloudTrail Deep Dive(SEC318) AWS CloudTrail Deep Dive
(SEC318) AWS CloudTrail Deep DiveAmazon Web Services
 
Running Kubernetes Across Multiple AWS Accounts (CON409) - AWS re:Invent 2018
Running Kubernetes Across Multiple AWS Accounts (CON409) - AWS re:Invent 2018Running Kubernetes Across Multiple AWS Accounts (CON409) - AWS re:Invent 2018
Running Kubernetes Across Multiple AWS Accounts (CON409) - AWS re:Invent 2018Amazon Web Services
 
[REPEAT] Microsoft Active Directory Deep Dive (WIN303-R) - AWS re:Invent 2018
[REPEAT] Microsoft Active Directory Deep Dive (WIN303-R) - AWS re:Invent 2018[REPEAT] Microsoft Active Directory Deep Dive (WIN303-R) - AWS re:Invent 2018
[REPEAT] Microsoft Active Directory Deep Dive (WIN303-R) - AWS re:Invent 2018Amazon Web Services
 
AWS S3 Tutorial For Beginners | Edureka
AWS S3 Tutorial For Beginners | EdurekaAWS S3 Tutorial For Beginners | Edureka
AWS S3 Tutorial For Beginners | EdurekaEdureka!
 
AWS IAM -- Notes of 20130403 Doc Version
AWS IAM -- Notes of 20130403 Doc VersionAWS IAM -- Notes of 20130403 Doc Version
AWS IAM -- Notes of 20130403 Doc VersionErnest Chiang
 
Understand AWS Pricing
Understand AWS PricingUnderstand AWS Pricing
Understand AWS PricingLynn Langit
 
Managing and governing multi-account AWS environments using AWS Organizations...
Managing and governing multi-account AWS environments using AWS Organizations...Managing and governing multi-account AWS environments using AWS Organizations...
Managing and governing multi-account AWS environments using AWS Organizations...Amazon Web Services
 
Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018
Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018
Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018Amazon Web Services Korea
 
Building Serverless Analytics Pipelines with AWS Glue (ANT308) - AWS re:Inven...
Building Serverless Analytics Pipelines with AWS Glue (ANT308) - AWS re:Inven...Building Serverless Analytics Pipelines with AWS Glue (ANT308) - AWS re:Inven...
Building Serverless Analytics Pipelines with AWS Glue (ANT308) - AWS re:Inven...Amazon Web Services
 
Architecting security and governance across your AWS environment
Architecting security and governance across your AWS environmentArchitecting security and governance across your AWS environment
Architecting security and governance across your AWS environmentAmazon Web Services
 

Tendances (20)

Designing security & governance via AWS Control Tower & Organizations - SEC30...
Designing security & governance via AWS Control Tower & Organizations - SEC30...Designing security & governance via AWS Control Tower & Organizations - SEC30...
Designing security & governance via AWS Control Tower & Organizations - SEC30...
 
AWS IAM policies in plain english
AWS IAM policies in plain english AWS IAM policies in plain english
AWS IAM policies in plain english
 
AWS re:Invent 2016: Workshop: Secure Your Web Application with AWS WAF and Am...
AWS re:Invent 2016: Workshop: Secure Your Web Application with AWS WAF and Am...AWS re:Invent 2016: Workshop: Secure Your Web Application with AWS WAF and Am...
AWS re:Invent 2016: Workshop: Secure Your Web Application with AWS WAF and Am...
 
Security Architectures on AWS
Security Architectures on AWSSecurity Architectures on AWS
Security Architectures on AWS
 
HSBC and AWS Day - AWS foundations
HSBC and AWS Day - AWS foundationsHSBC and AWS Day - AWS foundations
HSBC and AWS Day - AWS foundations
 
Amazon GuardDuty Threat Detection and Remediation
Amazon GuardDuty Threat Detection and RemediationAmazon GuardDuty Threat Detection and Remediation
Amazon GuardDuty Threat Detection and Remediation
 
(SEC318) AWS CloudTrail Deep Dive
(SEC318) AWS CloudTrail Deep Dive(SEC318) AWS CloudTrail Deep Dive
(SEC318) AWS CloudTrail Deep Dive
 
Running Kubernetes Across Multiple AWS Accounts (CON409) - AWS re:Invent 2018
Running Kubernetes Across Multiple AWS Accounts (CON409) - AWS re:Invent 2018Running Kubernetes Across Multiple AWS Accounts (CON409) - AWS re:Invent 2018
Running Kubernetes Across Multiple AWS Accounts (CON409) - AWS re:Invent 2018
 
Amazon API Gateway
Amazon API GatewayAmazon API Gateway
Amazon API Gateway
 
Becoming an IAM Policy Ninja
Becoming an IAM Policy NinjaBecoming an IAM Policy Ninja
Becoming an IAM Policy Ninja
 
[REPEAT] Microsoft Active Directory Deep Dive (WIN303-R) - AWS re:Invent 2018
[REPEAT] Microsoft Active Directory Deep Dive (WIN303-R) - AWS re:Invent 2018[REPEAT] Microsoft Active Directory Deep Dive (WIN303-R) - AWS re:Invent 2018
[REPEAT] Microsoft Active Directory Deep Dive (WIN303-R) - AWS re:Invent 2018
 
AWS S3 Tutorial For Beginners | Edureka
AWS S3 Tutorial For Beginners | EdurekaAWS S3 Tutorial For Beginners | Edureka
AWS S3 Tutorial For Beginners | Edureka
 
AWS IAM Introduction
AWS IAM IntroductionAWS IAM Introduction
AWS IAM Introduction
 
AWS IAM -- Notes of 20130403 Doc Version
AWS IAM -- Notes of 20130403 Doc VersionAWS IAM -- Notes of 20130403 Doc Version
AWS IAM -- Notes of 20130403 Doc Version
 
Understand AWS Pricing
Understand AWS PricingUnderstand AWS Pricing
Understand AWS Pricing
 
Managing and governing multi-account AWS environments using AWS Organizations...
Managing and governing multi-account AWS environments using AWS Organizations...Managing and governing multi-account AWS environments using AWS Organizations...
Managing and governing multi-account AWS environments using AWS Organizations...
 
Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018
Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018
Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018
 
Building Serverless Analytics Pipelines with AWS Glue (ANT308) - AWS re:Inven...
Building Serverless Analytics Pipelines with AWS Glue (ANT308) - AWS re:Inven...Building Serverless Analytics Pipelines with AWS Glue (ANT308) - AWS re:Inven...
Building Serverless Analytics Pipelines with AWS Glue (ANT308) - AWS re:Inven...
 
Architecting security and governance across your AWS environment
Architecting security and governance across your AWS environmentArchitecting security and governance across your AWS environment
Architecting security and governance across your AWS environment
 
Getting Started with Amazon EC2
Getting Started with Amazon EC2Getting Started with Amazon EC2
Getting Started with Amazon EC2
 

En vedette

Secure Amazon EC2 Environment with AWS IAM & Resource-Based Permissions (CPN2...
Secure Amazon EC2 Environment with AWS IAM & Resource-Based Permissions (CPN2...Secure Amazon EC2 Environment with AWS IAM & Resource-Based Permissions (CPN2...
Secure Amazon EC2 Environment with AWS IAM & Resource-Based Permissions (CPN2...Amazon Web Services
 
(SEC307) A Progressive Journey Through AWS IAM Federation Options
(SEC307) A Progressive Journey Through AWS IAM Federation Options(SEC307) A Progressive Journey Through AWS IAM Federation Options
(SEC307) A Progressive Journey Through AWS IAM Federation OptionsAmazon Web Services
 
(SEC302) IAM Best Practices To Live By
(SEC302) IAM Best Practices To Live By(SEC302) IAM Best Practices To Live By
(SEC302) IAM Best Practices To Live ByAmazon Web Services
 
AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...
AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...
AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...Amazon Web Services
 
Identity and Access Management (IAM)
Identity and Access Management (IAM)Identity and Access Management (IAM)
Identity and Access Management (IAM)Identacor
 
The Gartner IAM Program Maturity Model
The Gartner IAM Program Maturity ModelThe Gartner IAM Program Maturity Model
The Gartner IAM Program Maturity ModelSarah Moore
 
Introduction to Identity and Access Management (IAM)
Introduction to Identity and Access Management (IAM)Introduction to Identity and Access Management (IAM)
Introduction to Identity and Access Management (IAM)Amazon Web Services
 
Identity Access Management 101
Identity Access Management 101Identity Access Management 101
Identity Access Management 101OneLogin
 
IAM Methods 2.0 Presentation Michael Nielsen Deloitte
IAM Methods 2.0 Presentation Michael Nielsen DeloitteIAM Methods 2.0 Presentation Michael Nielsen Deloitte
IAM Methods 2.0 Presentation Michael Nielsen DeloitteIBM Sverige
 
Identity and Access Management 101
Identity and Access Management 101Identity and Access Management 101
Identity and Access Management 101Jerod Brennen
 
AWS IAM and security
AWS IAM and securityAWS IAM and security
AWS IAM and securityErik Paulsson
 
63 Requirements for CASB
63 Requirements for CASB63 Requirements for CASB
63 Requirements for CASBKyle Watson
 
Identity as a Service: a missing gap for moving enterprise applications in In...
Identity as a Service: a missing gap for moving enterprise applications in In...Identity as a Service: a missing gap for moving enterprise applications in In...
Identity as a Service: a missing gap for moving enterprise applications in In...Hoang Tri Vo
 
AWS re:Invent 2016: Introduction to Amazon CloudFront (CTD205)
AWS re:Invent 2016: Introduction to Amazon CloudFront (CTD205)AWS re:Invent 2016: Introduction to Amazon CloudFront (CTD205)
AWS re:Invent 2016: Introduction to Amazon CloudFront (CTD205)Amazon Web Services
 
Access Control for the Cloud: AWS Identity and Access Management (IAM) (SEC20...
Access Control for the Cloud: AWS Identity and Access Management (IAM) (SEC20...Access Control for the Cloud: AWS Identity and Access Management (IAM) (SEC20...
Access Control for the Cloud: AWS Identity and Access Management (IAM) (SEC20...Amazon Web Services
 
AWS re:Invent 2016: IAM Best Practices to Live By (SAC317)
AWS re:Invent 2016: IAM Best Practices to Live By (SAC317)AWS re:Invent 2016: IAM Best Practices to Live By (SAC317)
AWS re:Invent 2016: IAM Best Practices to Live By (SAC317)Amazon Web Services
 
(STG205) Secure Content Delivery Using Amazon CloudFront
(STG205) Secure Content Delivery Using Amazon CloudFront(STG205) Secure Content Delivery Using Amazon CloudFront
(STG205) Secure Content Delivery Using Amazon CloudFrontAmazon Web Services
 
(SEC315) AWS Directory Service Deep Dive
(SEC315) AWS Directory Service Deep Dive (SEC315) AWS Directory Service Deep Dive
(SEC315) AWS Directory Service Deep Dive Amazon Web Services
 

En vedette (20)

Secure Amazon EC2 Environment with AWS IAM & Resource-Based Permissions (CPN2...
Secure Amazon EC2 Environment with AWS IAM & Resource-Based Permissions (CPN2...Secure Amazon EC2 Environment with AWS IAM & Resource-Based Permissions (CPN2...
Secure Amazon EC2 Environment with AWS IAM & Resource-Based Permissions (CPN2...
 
(SEC307) A Progressive Journey Through AWS IAM Federation Options
(SEC307) A Progressive Journey Through AWS IAM Federation Options(SEC307) A Progressive Journey Through AWS IAM Federation Options
(SEC307) A Progressive Journey Through AWS IAM Federation Options
 
(SEC302) IAM Best Practices To Live By
(SEC302) IAM Best Practices To Live By(SEC302) IAM Best Practices To Live By
(SEC302) IAM Best Practices To Live By
 
AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...
AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...
AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less (SAC...
 
Identity and Access Management (IAM)
Identity and Access Management (IAM)Identity and Access Management (IAM)
Identity and Access Management (IAM)
 
The Gartner IAM Program Maturity Model
The Gartner IAM Program Maturity ModelThe Gartner IAM Program Maturity Model
The Gartner IAM Program Maturity Model
 
Introduction to Identity and Access Management (IAM)
Introduction to Identity and Access Management (IAM)Introduction to Identity and Access Management (IAM)
Introduction to Identity and Access Management (IAM)
 
In Depth: AWS IAM and VPC
In Depth: AWS IAM and VPCIn Depth: AWS IAM and VPC
In Depth: AWS IAM and VPC
 
Identity Access Management 101
Identity Access Management 101Identity Access Management 101
Identity Access Management 101
 
IAM Methods 2.0 Presentation Michael Nielsen Deloitte
IAM Methods 2.0 Presentation Michael Nielsen DeloitteIAM Methods 2.0 Presentation Michael Nielsen Deloitte
IAM Methods 2.0 Presentation Michael Nielsen Deloitte
 
Identity and Access Management 101
Identity and Access Management 101Identity and Access Management 101
Identity and Access Management 101
 
AWS IAM and security
AWS IAM and securityAWS IAM and security
AWS IAM and security
 
63 Requirements for CASB
63 Requirements for CASB63 Requirements for CASB
63 Requirements for CASB
 
Identity as a Service: a missing gap for moving enterprise applications in In...
Identity as a Service: a missing gap for moving enterprise applications in In...Identity as a Service: a missing gap for moving enterprise applications in In...
Identity as a Service: a missing gap for moving enterprise applications in In...
 
AWS re:Invent 2016: Introduction to Amazon CloudFront (CTD205)
AWS re:Invent 2016: Introduction to Amazon CloudFront (CTD205)AWS re:Invent 2016: Introduction to Amazon CloudFront (CTD205)
AWS re:Invent 2016: Introduction to Amazon CloudFront (CTD205)
 
Access Control for the Cloud: AWS Identity and Access Management (IAM) (SEC20...
Access Control for the Cloud: AWS Identity and Access Management (IAM) (SEC20...Access Control for the Cloud: AWS Identity and Access Management (IAM) (SEC20...
Access Control for the Cloud: AWS Identity and Access Management (IAM) (SEC20...
 
AWS re:Invent 2016: IAM Best Practices to Live By (SAC317)
AWS re:Invent 2016: IAM Best Practices to Live By (SAC317)AWS re:Invent 2016: IAM Best Practices to Live By (SAC317)
AWS re:Invent 2016: IAM Best Practices to Live By (SAC317)
 
(STG205) Secure Content Delivery Using Amazon CloudFront
(STG205) Secure Content Delivery Using Amazon CloudFront(STG205) Secure Content Delivery Using Amazon CloudFront
(STG205) Secure Content Delivery Using Amazon CloudFront
 
(SEC315) AWS Directory Service Deep Dive
(SEC315) AWS Directory Service Deep Dive (SEC315) AWS Directory Service Deep Dive
(SEC315) AWS Directory Service Deep Dive
 
IAM Best Practices
IAM Best PracticesIAM Best Practices
IAM Best Practices
 

Similaire à (SEC305) How to Become an IAM Policy Ninja in 60 Minutes or Less

SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS OrganizationsSEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS OrganizationsAmazon Web Services
 
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS OrganizationsSEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS OrganizationsAmazon Web Services
 
Mastering Access Control Policies (SEC302) | AWS re:Invent 2013
Mastering Access Control Policies (SEC302) | AWS re:Invent 2013Mastering Access Control Policies (SEC302) | AWS re:Invent 2013
Mastering Access Control Policies (SEC302) | AWS re:Invent 2013Amazon Web Services
 
Mastering Access Control Policies
Mastering Access Control PoliciesMastering Access Control Policies
Mastering Access Control PoliciesAmazon Web Services
 
How to Become an IAM Policy Ninja
How to Become an IAM Policy NinjaHow to Become an IAM Policy Ninja
How to Become an IAM Policy NinjaAmazon Web Services
 
Becoming an AWS Policy Ninja using AWS IAM - AWS Summit Tel Aviv 2017
Becoming an AWS Policy Ninja using AWS IAM - AWS Summit Tel Aviv 2017Becoming an AWS Policy Ninja using AWS IAM - AWS Summit Tel Aviv 2017
Becoming an AWS Policy Ninja using AWS IAM - AWS Summit Tel Aviv 2017Amazon Web Services
 
Windsor AWS UG Deep dive IAM 2 - no json101
Windsor AWS UG   Deep dive IAM 2 - no json101Windsor AWS UG   Deep dive IAM 2 - no json101
Windsor AWS UG Deep dive IAM 2 - no json101Goran Karmisevic
 
best aws training in bangalore
best aws training in bangalorebest aws training in bangalore
best aws training in bangalorerajkamal560066
 
Identify and Access Management: The First Step in AWS Security
Identify and Access Management: The First Step in AWS SecurityIdentify and Access Management: The First Step in AWS Security
Identify and Access Management: The First Step in AWS SecurityAmazon Web Services
 
(SEC303) Mastering Access Control Policies | AWS re:Invent 2014
(SEC303) Mastering Access Control Policies | AWS re:Invent 2014(SEC303) Mastering Access Control Policies | AWS re:Invent 2014
(SEC303) Mastering Access Control Policies | AWS re:Invent 2014Amazon Web Services
 
Identity and Access Management: The First Step in AWS Security
Identity and Access Management: The First Step in AWS SecurityIdentity and Access Management: The First Step in AWS Security
Identity and Access Management: The First Step in AWS SecurityAmazon Web Services
 
AWS Technical Day Riyadh Nov 2019 - The art of mastering data protection on aws
AWS Technical Day Riyadh Nov 2019 - The art of mastering data protection on awsAWS Technical Day Riyadh Nov 2019 - The art of mastering data protection on aws
AWS Technical Day Riyadh Nov 2019 - The art of mastering data protection on awsAWS Riyadh User Group
 
Best Practices for Managing Security Operations in AWS - AWS July 2016 Webina...
Best Practices for Managing Security Operations in AWS - AWS July 2016 Webina...Best Practices for Managing Security Operations in AWS - AWS July 2016 Webina...
Best Practices for Managing Security Operations in AWS - AWS July 2016 Webina...Amazon Web Services
 
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS OrganizationsSEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS OrganizationsAmazon Web Services
 
(SEC402) Intrusion Detection in the Cloud | AWS re:Invent 2014
(SEC402) Intrusion Detection in the Cloud | AWS re:Invent 2014(SEC402) Intrusion Detection in the Cloud | AWS re:Invent 2014
(SEC402) Intrusion Detection in the Cloud | AWS re:Invent 2014Amazon Web Services
 

Similaire à (SEC305) How to Become an IAM Policy Ninja in 60 Minutes or Less (20)

SID314_IAM Policy Ninja
SID314_IAM Policy NinjaSID314_IAM Policy Ninja
SID314_IAM Policy Ninja
 
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS OrganizationsSEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
 
Policy Ninja
Policy NinjaPolicy Ninja
Policy Ninja
 
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS OrganizationsSEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
 
Become an IAM Policy Ninja
Become an IAM Policy NinjaBecome an IAM Policy Ninja
Become an IAM Policy Ninja
 
Mastering Access Control Policies (SEC302) | AWS re:Invent 2013
Mastering Access Control Policies (SEC302) | AWS re:Invent 2013Mastering Access Control Policies (SEC302) | AWS re:Invent 2013
Mastering Access Control Policies (SEC302) | AWS re:Invent 2013
 
Mastering Access Control Policies
Mastering Access Control PoliciesMastering Access Control Policies
Mastering Access Control Policies
 
Policy Ninja
Policy NinjaPolicy Ninja
Policy Ninja
 
How to Become an IAM Policy Ninja
How to Become an IAM Policy NinjaHow to Become an IAM Policy Ninja
How to Become an IAM Policy Ninja
 
Masting Access Control Policies
Masting Access Control PoliciesMasting Access Control Policies
Masting Access Control Policies
 
Becoming an AWS Policy Ninja using AWS IAM - AWS Summit Tel Aviv 2017
Becoming an AWS Policy Ninja using AWS IAM - AWS Summit Tel Aviv 2017Becoming an AWS Policy Ninja using AWS IAM - AWS Summit Tel Aviv 2017
Becoming an AWS Policy Ninja using AWS IAM - AWS Summit Tel Aviv 2017
 
Windsor AWS UG Deep dive IAM 2 - no json101
Windsor AWS UG   Deep dive IAM 2 - no json101Windsor AWS UG   Deep dive IAM 2 - no json101
Windsor AWS UG Deep dive IAM 2 - no json101
 
best aws training in bangalore
best aws training in bangalorebest aws training in bangalore
best aws training in bangalore
 
Identify and Access Management: The First Step in AWS Security
Identify and Access Management: The First Step in AWS SecurityIdentify and Access Management: The First Step in AWS Security
Identify and Access Management: The First Step in AWS Security
 
(SEC303) Mastering Access Control Policies | AWS re:Invent 2014
(SEC303) Mastering Access Control Policies | AWS re:Invent 2014(SEC303) Mastering Access Control Policies | AWS re:Invent 2014
(SEC303) Mastering Access Control Policies | AWS re:Invent 2014
 
Identity and Access Management: The First Step in AWS Security
Identity and Access Management: The First Step in AWS SecurityIdentity and Access Management: The First Step in AWS Security
Identity and Access Management: The First Step in AWS Security
 
AWS Technical Day Riyadh Nov 2019 - The art of mastering data protection on aws
AWS Technical Day Riyadh Nov 2019 - The art of mastering data protection on awsAWS Technical Day Riyadh Nov 2019 - The art of mastering data protection on aws
AWS Technical Day Riyadh Nov 2019 - The art of mastering data protection on aws
 
Best Practices for Managing Security Operations in AWS - AWS July 2016 Webina...
Best Practices for Managing Security Operations in AWS - AWS July 2016 Webina...Best Practices for Managing Security Operations in AWS - AWS July 2016 Webina...
Best Practices for Managing Security Operations in AWS - AWS July 2016 Webina...
 
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS OrganizationsSEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
SEC302 Becoming an AWS Policy Ninja using AWS IAM and AWS Organizations
 
(SEC402) Intrusion Detection in the Cloud | AWS re:Invent 2014
(SEC402) Intrusion Detection in the Cloud | AWS re:Invent 2014(SEC402) Intrusion Detection in the Cloud | AWS re:Invent 2014
(SEC402) Intrusion Detection in the Cloud | AWS re:Invent 2014
 

Plus de Amazon Web Services

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Amazon Web Services
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Amazon Web Services
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateAmazon Web Services
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSAmazon Web Services
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Amazon Web Services
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Amazon Web Services
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...Amazon Web Services
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsAmazon Web Services
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSAmazon Web Services
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAmazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareAmazon Web Services
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWSAmazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckAmazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without serversAmazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...Amazon Web Services
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceAmazon Web Services
 

Plus de Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

Dernier

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 

Dernier (20)

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

(SEC305) How to Become an IAM Policy Ninja in 60 Minutes or Less

  • 1. © 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Jeff Wierer, Senior AWS IAM Manager October 2015 SEC305 How to Become an IAM Policy Ninja in 60 Minutes or Less
  • 2. What to expect from this session • Know more about securing your AWS resources • Get a deeper understanding of the policy language • Tips and tricks for common use cases • Debugging and testing policies • Keep this a lively session via demos • Amazon S3 • AWS Identity and Access Management (IAM) • Amazon EC2
  • 3. Limit Amazon EC2 instance types Demo
  • 4. Limit Amazon EC2 instance types Demo • • – –
  • 5. Limit Amazon EC2 instance types Demo • • – –
  • 8. Policy specification basics JSON-formatted documents Contain a statement (permissions) that specifies: • Which actions a principal can perform • Which resources can be accessed { "Statement":[{ "Effect":"effect", "Principal":"principal", "Action":"action", "Resource":"arn", "Condition":{ "condition":{ "key":"value" } } } ] } Principal Action Resource Condition You can have multiple statements and each statement is comprised of PARC.
  • 9. Principal – Examples • An entity that is allowed or denied access to a resource • Indicated by an Amazon Resource Name (ARN) • With IAM policies, the principal element is implicit (i.e., the user, group, or role attached)
  • 10. Principal – Examples • An entity that is allowed or denied access to a resource • Indicated by an Amazon Resource Name (ARN) • With IAM policies, the principal element is implicit (i.e., the user, group, or role attached) <!-- Everyone (anonymous users) --> "Principal":"AWS":"*.*"
  • 11. Principal – Examples • An entity that is allowed or denied access to a resource • Indicated by an Amazon Resource Name (ARN) • With IAM policies, the principal element is implicit (i.e., the user, group, or role attached) <!-- Everyone (anonymous users) --> "Principal":"AWS":"*.*" <!-- Specific account or accounts --> "Principal":{"AWS":"arn:aws:iam::123456789012:root" } "Principal":{"AWS":"123456789012"}
  • 12. Principal – Examples • An entity that is allowed or denied access to a resource • Indicated by an Amazon Resource Name (ARN) • With IAM policies, the principal element is implicit (i.e., the user, group, or role attached) <!-- Everyone (anonymous users) --> "Principal":"AWS":"*.*" <!-- Specific account or accounts --> "Principal":{"AWS":"arn:aws:iam::123456789012:root" } "Principal":{"AWS":"123456789012"} <!-- Individual IAM user --> "Principal":"AWS":"arn:aws:iam::123456789012:user/username"
  • 13. Principal – Examples • An entity that is allowed or denied access to a resource • Indicated by an Amazon Resource Name (ARN) • With IAM policies, the principal element is implicit (i.e., the user, group, or role attached) <!-- Everyone (anonymous users) --> "Principal":"AWS":"*.*" <!-- Specific account or accounts --> "Principal":{"AWS":"arn:aws:iam::123456789012:root" } "Principal":{"AWS":"123456789012"} <!-- Individual IAM user --> "Principal":"AWS":"arn:aws:iam::123456789012:user/username" <!-- Federated user (using web identity federation) --> "Principal":{"Federated":"www.amazon.com"} "Principal":{"Federated":"graph.facebook.com"} "Principal":{"Federated":"accounts.google.com"}
  • 14. Principal – Examples • An entity that is allowed or denied access to a resource • Indicated by an Amazon Resource Name (ARN) • With IAM policies, the principal element is implicit (i.e., the user, group, or role attached) <!-- Everyone (anonymous users) --> "Principal":"AWS":"*.*" <!-- Specific account or accounts --> "Principal":{"AWS":"arn:aws:iam::123456789012:root" } "Principal":{"AWS":"123456789012"} <!-- Individual IAM user --> "Principal":"AWS":"arn:aws:iam::123456789012:user/username" <!-- Federated user (using web identity federation) --> "Principal":{"Federated":"www.amazon.com"} "Principal":{"Federated":"graph.facebook.com"} "Principal":{"Federated":"accounts.google.com"} <!-- Specific role --> "Principal":{"AWS":"arn:aws:iam::123456789012:role/rolename"}
  • 15. Principal – Examples • An entity that is allowed or denied access to a resource • Indicated by an Amazon Resource Name (ARN) • With IAM policies, the principal element is implicit (i.e., the user, group, or role attached) <!-- Everyone (anonymous users) --> "Principal":"AWS":"*.*" <!-- Specific account or accounts --> "Principal":{"AWS":"arn:aws:iam::123456789012:root" } "Principal":{"AWS":"123456789012"} <!-- Individual IAM user --> "Principal":"AWS":"arn:aws:iam::123456789012:user/username" <!-- Federated user (using web identity federation) --> "Principal":{"Federated":"www.amazon.com"} "Principal":{"Federated":"graph.facebook.com"} "Principal":{"Federated":"accounts.google.com"} <!-- Specific role --> "Principal":{"AWS":"arn:aws:iam::123456789012:role/rolename"} <!-- Specific service --> "Principal":{"Service":"ec2.amazonaws.com"}
  • 16. Principal – Examples • An entity that is allowed or denied access to a resource • Indicated by an Amazon Resource Name (ARN) • With IAM policies, the principal element is implicit (i.e., the user, group, or role attached) <!-- Everyone (anonymous users) --> "Principal":"AWS":"*.*" <!-- Specific account or accounts --> "Principal":{"AWS":"arn:aws:iam::123456789012:root" } "Principal":{"AWS":"123456789012"} <!-- Individual IAM user --> "Principal":"AWS":"arn:aws:iam::123456789012:user/username" <!-- Federated user (using web identity federation) --> "Principal":{"Federated":"www.amazon.com"} "Principal":{"Federated":"graph.facebook.com"} "Principal":{"Federated":"accounts.google.com"} <!-- Specific role --> "Principal":{"AWS":"arn:aws:iam::123456789012:role/rolename"} <!-- Specific service --> "Principal":{"Service":"ec2.amazonaws.com"} Replace with your account number
  • 17. Action – Examples • Describes the type of access that should be allowed or denied • You can find these in the docs or use the policy editor to get a drop-down list • Statements must include either an Action or NotAction element
  • 18. Action – Examples • Describes the type of access that should be allowed or denied • You can find these in the docs or use the policy editor to get a drop-down list • Statements must include either an Action or NotAction element <!-- EC2 action --> "Action":"ec2:StartInstances" <!-- IAM action --> "Action":"iam:ChangePassword" <!-- S3 action --> "Action":"s3:GetObject"
  • 19. Action – Examples • Describes the type of access that should be allowed or denied • You can find these in the docs or use the policy editor to get a drop-down list • Statements must include either an Action or NotAction element <!-- EC2 action --> "Action":"ec2:StartInstances" <!-- IAM action --> "Action":"iam:ChangePassword" <!-- S3 action --> "Action":"s3:GetObject" <!-- Specify multiple values for the Action element--> "Action":["sqs:SendMessage","sqs:ReceiveMessage"]
  • 20. Action – Examples • Describes the type of access that should be allowed or denied • You can find these in the docs or use the policy editor to get a drop-down list • Statements must include either an Action or NotAction element <!-- EC2 action --> "Action":"ec2:StartInstances" <!-- IAM action --> "Action":"iam:ChangePassword" <!-- S3 action --> "Action":"s3:GetObject" <!-- Specify multiple values for the Action element--> "Action":["sqs:SendMessage","sqs:ReceiveMessage"] <--Use wildcards (* or ?) as part of the action name. This would cover Create/Delete/List/Update--> "Action":"iam:*AccessKey*"
  • 21. Understanding NotAction • Lets you specify an exception to a list of actions • Could result in shorter policies than using Action and denying many actions • Example: Let’s say you want to allow everything but IAM APIs
  • 22. Understanding NotAction • Lets you specify an exception to a list of actions • Could result in shorter policies than using Action and denying many actions • Example: Let’s say you want to allow everything but IAM APIs { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "NotAction": "iam:*", "Resource": "*" } ] }
  • 23. Understanding NotAction • Lets you specify an exception to a list of actions • Could result in shorter policies than using Action and denying many actions • Example: Let’s say you want to allow everything but IAM APIs { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "NotAction": "iam:*", "Resource": "*" } ] } or
  • 24. Understanding NotAction • Lets you specify an exception to a list of actions • Could result in shorter policies than using Action and denying many actions • Example: Let’s say you want to allow everything but IAM APIs { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "NotAction": "iam:*", "Resource": "*" } ] } { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "*", "Resource": "*" }, { "Effect": "Deny", "Action": "iam:*", "Resource": "*" } ] } or
  • 25. Understanding NotAction • Lets you specify an exception to a list of actions • Could result in shorter policies than using Action and denying many actions • Example: Let’s say you want to allow everything but IAM APIs { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "NotAction": "iam:*", "Resource": "*" } ] } { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "*", "Resource": "*" }, { "Effect": "Deny", "Action": "iam:*", "Resource": "*" } ] } or Is there a difference?
  • 26. Understanding NotAction • Lets you specify an exception to a list of actions • Could result in shorter policies than using Action and denying many actions • Example: Let’s say you want to allow everything but IAM APIs { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "NotAction": "iam:*", "Resource": "*" } ] } { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "*", "Resource": "*" }, { "Effect": "Deny", "Action": "iam:*", "Resource": "*" } ] } or This is not a Deny. A user could still have a separate policy that grants IAM:*
  • 27. Understanding NotAction • Lets you specify an exception to a list of actions • Could result in shorter policies than using Action and denying many actions • Example: Let’s say you want to allow everything but IAM APIs { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "NotAction": "iam:*", "Resource": "*" } ] } { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "*", "Resource": "*" }, { "Effect": "Deny", "Action": "iam:*", "Resource": "*" } ] } or This is not a Deny. A user could still have a separate policy that grants IAM:* If you want to prevent the user from ever being able to call IAM APIs, use an explicit deny.
  • 28. Resource – Examples • The object or objects that are being requested • Statements must include either a Resource or a NotResource element
  • 29. Resource – Examples • The object or objects that are being requested • Statements must include either a Resource or a NotResource element <-- S3 Bucket --> "Resource":"arn:aws:s3:::my_corporate_bucket/*" <-- SQS queue--> "Resource":"arn:aws:sqs:us-west-2:123456789012:queue1" <-- Multiple DynamoDB tables --> "Resource":["arn:aws:dynamodb:us-west-2:123456789012:table/books_table", "arn:aws:dynamodb:us-west-2:123456789012:table/magazines_table"] <-- All EC2 instances for an account in a region --> "Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*"
  • 30. Conditions • Optional criteria that must evaluate to true for the policy to evaluate as true (ex: restrict to an IP address range) Condition element
  • 31. Conditions Condition element Condition 1: Key1: Value1A Condition 2: Key3: Value3A • Optional criteria that must evaluate to true for the policy to evaluate as true • Ex: restrict to an IP address range • Can contain multiple conditions
  • 32. Conditions • Optional criteria that must evaluate to true for the policy to evaluate as true • Ex: restrict to an IP address range • Can contain multiple conditions • Condition keys can contain multiple values Condition element Condition 1: Key1: Value1A Condition 2: Key3: Value3A Key1: Value1A Value1B Value 1C
  • 33. Conditions • Optional criteria that must evaluate to true for the policy to evaluate as true • Ex: restrict to an IP address range • Can contain multiple conditions • Condition keys can contain multiple values • If a single condition includes multiple values for one key, the condition is evaluated using logical OR • Condition element Condition 1: Key1: Value1A Condition 2: Key3: Value3A OR ORKey1: Value1A Value1B Value 1C
  • 34. Conditions • Optional criteria that must evaluate to true for the policy to evaluate as true • Ex: restrict to an IP address range • Can contain multiple conditions • Condition keys can contain multiple values • If a single condition includes multiple values for one key, the condition is evaluated using logical OR • Multiple conditions (or multiple keys in a single condition): the conditions are evaluated using logical AND Condition element Condition 1: Key1: Value1A Condition 2: Key3: Value3A AND AND Key2: Value2A OR Value2B OR ORKey1: Value1A Value1B Value 1C
  • 35. Condition example "Condition" : { "DateGreaterThan" : {"aws:CurrentTime" : "2015-10-08T12:00:00Z"}, "DateLessThan": {"aws:CurrentTime" : "2015-10-08T15:00:00Z"}, "IpAddress" : {"aws:SourceIp" : ["192.0.2.0/24", "203.0.113.0/24"]} } • Allows a user to access a resource under the following conditions: • The time is after 12:00 P.M. on 10/8/2015 AND • The time is before 3:00 P.M. on 10/8/2015 AND • The request comes from an IP address in the 192.0.2.0 /24 OR 203.0.113.0 /24 range All of these conditions must be met in order for the statement to evaluate to TRUE. AND OR What if you wanted to restrict access to a time frame and IP address range?
  • 38. { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::myBucket"], "Condition": {"StringLike": {"s3:prefix":["home/${aws:username}/*"]} } }, { "Effect":"Allow", "Action":["s3:*"], "Resource": ["arn:aws:s3:::myBucket/home/${aws:username}", "arn:aws:s3:::myBucket/home/${aws:username}/*"] } ] } The anatomy of a policy with variables Grants a user access to a home directory in S3 that can be accessed programmatically
  • 39. { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::myBucket"], "Condition": {"StringLike": {"s3:prefix":["home/${aws:username}/*"]} } }, { "Effect":"Allow", "Action":["s3:*"], "Resource": ["arn:aws:s3:::myBucket/home/${aws:username}", "arn:aws:s3:::myBucket/home/${aws:username}/*"] } ] } The anatomy of a policy with variables Version is required Grants a user access to a home directory in S3 that can be accessed programmatically
  • 40. { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::myBucket"], "Condition": {"StringLike": {"s3:prefix":["home/${aws:username}/*"]} } }, { "Effect":"Allow", "Action":["s3:*"], "Resource": ["arn:aws:s3:::myBucket/home/${aws:username}", "arn:aws:s3:::myBucket/home/${aws:username}/*"] } ] } The anatomy of a policy with variables Version is required Variable in conditions Grants a user access to a home directory in S3 that can be accessed programmatically
  • 41. { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::myBucket"], "Condition": {"StringLike": {"s3:prefix":["home/${aws:username}/*"]} } }, { "Effect":"Allow", "Action":["s3:*"], "Resource": ["arn:aws:s3:::myBucket/home/${aws:username}", "arn:aws:s3:::myBucket/home/${aws:username}/*"] } ] } The anatomy of a policy with variables Version is required Variable in conditions Variable in resource ARNs Grants a user access to a home directory in S3 that can be accessed programmatically
  • 44. IAM policies • Managed policies (newer way) • Can be attached to multiple users, groups, and roles • AWS managed policies: Created and maintained by AWS • Customer managed policies: Created and maintained by you • Up to 5K per policy • Up to 5 versions of a policy so you can roll back to a prior version • You can attach 10 managed policies per user, group, or role • You can limit who can attach which managed policies • Inline policies (older way) • You create and embed directly in a single user, group, or role • Variable policy size (2K per user, 5K per group, 10K per role)
  • 45. Resource-based policies IAM policies live with: • IAM users • IAM groups • IAM roles Some services allow storing policy with resources: • S3 (bucket policy) • Amazon Glacier (vault policy) • Amazon SNS (topic policy) • Amazon SQS (queue policy) { "Statement": { "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-1:444455556666:queue1" } }
  • 46. Resource-based policies IAM policies live with: • IAM users • IAM groups • IAM roles Some services allow storing policy with resources: • S3 (bucket policy) • Amazon Glacier (vault policy) • Amazon SNS (topic policy) • Amazon SQS (queue policy) { "Statement": { "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-1:444455556666:queue1" } } Principal required here
  • 47. Resource-based policies IAM policies live with: • IAM users • IAM groups • IAM roles Some services allow storing policy with resources: • S3 (bucket policy) • Amazon Glacier (vault policy) • Amazon SNS (topic policy) • Amazon SQS (queue policy) { "Statement": { "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-1:444455556666:queue1" } } Principal required here Managed policies apply only to users, groups, and roles— not resources
  • 48. Resource-based policies IAM policies live with: • IAM users • IAM groups • IAM roles Some services allow storing policy with resources: • S3 (bucket policy) • Amazon Glacier (vault policy) • Amazon SNS (topic policy) • Amazon SQS (queue policy) { "Statement": { "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-1:444455556666:queue1" } } Principal required here
  • 49. Enough already… Let’s look at some examples
  • 50. Enough already… Let’s look at some examples
  • 51. Creating a home directory using S3 Demo
  • 52. Creating a home directory using S3 Demo • – – • – – –
  • 53. Giving a user a home directory from the S3 console { "Version": "2012-10-17", ] }
  • 54. Giving a user a home directory from the S3 console { "Version": "2012-10-17", "Statement": [ {"Sid": "AllowGroupToSeeBucketListInTheManagementConsole", "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"]}, {"Sid": "AllowRootLevelListingOfThisBucketAndHomePrefix", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::myBucket"], "Condition":{"StringEquals":{"s3:prefix":["","home/"],"s3:delimiter":["/"]}}}, ] } • Necessary to access the S3 console.
  • 55. Giving a user a home directory from the S3 console { "Version": "2012-10-17", "Statement": [ {"Sid": "AllowGroupToSeeBucketListInTheManagementConsole", "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"]}, {"Sid": "AllowRootLevelListingOfThisBucketAndHomePrefix", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::myBucket"], "Condition":{"StringEquals":{"s3:prefix":["","home/"],"s3:delimiter":["/"]}}}, {"Sid": "AllowListBucketofASpecificUserPrefix", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::myBucket"], "Condition":{"StringLike":{"s3:prefix":["home/${aws:username}/*"]}}}, ] } • Allows listing all objects in a folder and its subfolders.
  • 56. Giving a user a home directory from the S3 console { "Version": "2012-10-17", "Statement": [ {"Sid": "AllowGroupToSeeBucketListInTheManagementConsole", "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"]}, {"Sid": "AllowRootLevelListingOfThisBucketAndHomePrefix", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::myBucket"], "Condition":{"StringEquals":{"s3:prefix":["","home/"],"s3:delimiter":["/"]}}}, {"Sid": "AllowListBucketofASpecificUserPrefix", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::myBucket"], "Condition":{"StringLike":{"s3:prefix":["home/${aws:username}/*"]}}}, {"Sid":"AllowUserFullAccesstoJustSpecificUserPrefix", "Action":["s3:*"], "Effect":"Allow", "Resource": ["arn:aws:s3:::myBucket/home/${aws:username}", "arn:aws:s3:::myBucket/home/${aws:username}/*"]} ] } • Allows modifying objects in the folder and subfolders.
  • 57. Creating a “limited” IAM administrator Demo
  • 58. Creating a “limited” IAM administrator Demo • –
  • 59. Creating a “limited” IAM administrator Demo • – • – – Grant admin access to the IAM console to be able to create users and generate access keys. –
  • 60. Create a “limited” IAM administrator { "Version": "2012-10-17", "Statement": [{ "Sid": "ManageUsersPermissions", "Effect": "Allow", "Action": ["iam:ChangePasword", "iam:CreateAccessKey", "iam:CreateLoginProfile", "iam:CreateUser", "iam:DeleteAccessKey", "iam:DeleteLoginProfile", "iam:DeleteUser", "iam:UpdateAccessKey", "iam:ListAttachedUserPolicies", "iam:ListPolicies"], "Resource": "*" }, { "Sid": "LimitedAttachmentPermissions", "Effect": "Allow", "Action": ["iam:AttachUserPolicy","iam:DetachUserPolicy"], "Resource": "*", "Condition": { "ArnEquals": { "iam:PolicyArn": [ "arn:aws:iam::123456789012:policy/reInvent2015_S3_Home_Folder", "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess" ] } } } ] } See AWS Security Blog post http://amzn.to/1Hf2XRl
  • 61. Create a “limited” IAM administrator { "Version": "2012-10-17", "Statement": [{ "Sid": "ManageUsersPermissions", "Effect": "Allow", "Action": ["iam:ChangePasword", "iam:CreateAccessKey", "iam:CreateLoginProfile", "iam:CreateUser", "iam:DeleteAccessKey", "iam:DeleteLoginProfile", "iam:DeleteUser", "iam:UpdateAccessKey", "iam:ListAttachedUserPolicies", "iam:ListPolicies"], "Resource": "*" }, { "Sid": "LimitedAttachmentPermissions", "Effect": "Allow", "Action": ["iam:AttachUserPolicy","iam:DetachUserPolicy"], "Resource": "*", "Condition": { "ArnEquals": { "iam:PolicyArn": [ "arn:aws:iam::123456789012:policy/reInvent2015_S3_Home_Folder", "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess" ] } } } ] } See AWS Security Blog post http://amzn.to/1Hf2XRl • Allows creating users, managing keys, and setting passwords.
  • 62. Create a “limited” IAM administrator { "Version": "2012-10-17", "Statement": [{ "Sid": "ManageUsersPermissions", "Effect": "Allow", "Action": ["iam:ChangePasword", "iam:CreateAccessKey", "iam:CreateLoginProfile", "iam:CreateUser", "iam:DeleteAccessKey", "iam:DeleteLoginProfile", "iam:DeleteUser", "iam:UpdateAccessKey", "iam:ListAttachedUserPolicies", "iam:ListPolicies"], "Resource": "*" }, { "Sid": "LimitedAttachmentPermissions", "Effect": "Allow", "Action": ["iam:AttachUserPolicy","iam:DetachUserPolicy"], "Resource": "*", "Condition": { "ArnEquals": { "iam:PolicyArn": [ "arn:aws:iam::123456789012:policy/reInvent2015_S3_Home_Folder", "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess" ] } } } ] } See AWS Security Blog post http://amzn.to/1Hf2XRl • Limits attaching only these two policies.
  • 63. Grant a user access to the IAM console { "Version": "2012-10-17", "Statement": [{ "Sid": "ViewListOfAllUsers", "Action": "iam:ListUsers", "Effect": "Allow", "Resource": "arn:aws:iam::123456789012:user/*" }, { "Sid": "AllowAdmintoAccessUser", "Effect": "Allow", "Action": ["iam:GetUser","iam:GetLoginProfile", "iam:ListGroupsForUser","iam:ListAccessKeys"], "Resource": "arn:aws:iam::123456789012:user/${aws:username}" } ] } • Underneath the covers, the IAM console calls these APIs to view user settings. • The user will be able to view details about all users. • Doesn’t enable adding/removing MFA.
  • 66. { "Statement": [{ "Effect": "Allow", "Action": ["ec2:TerminateInstances"], "Resource":"*" } ] } EC2 policies before resource-level permissions
  • 67. { "Statement": [{ "Effect": "Allow", "Action": ["ec2:TerminateInstances"], "Resource":"*" } ] } Tell me there is a better way. EC2 policies before resource-level permissions
  • 68. { "Statement": [{ "Effect": "Allow", "Action": ["ec2:TerminateInstances"], "Resource": "arn:aws:ec2:us-east-1:123456789012:instance/i-abc12345" } ] } EC2 policies after resource-level permissions
  • 69. EC2 policies after resource-level permissions { "Statement": [{ "Effect": "Allow", "Action": ["ec2:TerminateInstances"], "Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*" } ] }
  • 70. EC2 policies after resource-level permissions { "Statement": [{ "Effect": "Allow", "Action": ["ec2:TerminateInstances"], "Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*", "Condition": { "StringEquals": {"ec2:ResourceTag/department": "dev"} } } ] }
  • 71. Supported EC2 resource types • Customer gateway • DHCP options set • Image • Instance • Instance profile • Internet gateway • Key pair • Network ACL • Network interface • Placement group • Route table • Security group • Snapshot • Subnet • Volume • VPC • VPC peering connection Supports many different resource types, including:
  • 72. Supported EC2 actions Note: This is only a subset of all possible EC2 actions. Type of Resource Actions EC2 instances RebootInstances, RunInstance, StartInstances, StopInstances, TerminateInstances, AttachClassicLinkVpc, AttachVolume, DetachClassicLinkVpc, DetachVolume, Customer gateway DeleteCustomerGateway DHCP options sets DeleteDhcpOptions Internet gateways DeleteInternetGateway Network ACLs DeleteNetworkAcl, DeleteNetworkAclEntry Route tables DeleteRoute, DeleteRouteTable Security groups AuthorizeSecurityGroupEgress, AuthorizeSecurityGroupIngress, DeleteSecurityGroup, RevokeSecurityGroupEgress, RevokeSecurityGroupIngress, AttachClassicLinkVpc, RunInstances Volumes AttachVolume, DeleteVolume, DetachVolume, RunInstances VPC peering connections AcceptVpcPeeringConnection, CreateVpcPeeringConnection, DeleteVpcPeeringConnection, RejectVpcPeeringConnection, DisableVpcClassicLink, EnableVpcClassicLink Accurate as of 10/1/2015
  • 73. Categorize your EC2 resources Use tags as a resource attribute
  • 77. Locking down access to EC2 instances { "Version": "2012-10-17", "Statement": [ { "Sid": "THISALLOWSEC2READACCESS", "Effect": "Allow", "Action": ["ec2:Describe*","elasticloadbalancing:Describe*", "cloudwatch:ListMetrics","cloudwatch:GetMetricStatistics", "cloudwatch:Describe*","autoscaling:Describe*"], "Resource": "*" }, { "Sid": "THISLIMITSACCESSTOOWNINSTANCES", "Effect": "Allow", "Action": ["ec2:RebootInstances","ec2:StartInstances", "ec2:StopInstances","ec2:TerminateInstances"], "Resource":"arn:aws:ec2:us-east-1:123456789012:instance/*", "Condition": {"StringEquals": {"ec2:ResourceTag/Owner": "${aws:username}"}} } ] }
  • 78. Locking down access to EC2 instances { "Version": "2012-10-17", "Statement": [ { "Sid": "THISALLOWSEC2READACCESS", "Effect": "Allow", "Action": ["ec2:Describe*","elasticloadbalancing:Describe*", "cloudwatch:ListMetrics","cloudwatch:GetMetricStatistics", "cloudwatch:Describe*","autoscaling:Describe*"], "Resource": "*" }, { "Sid": "THISLIMITSACCESSTOOWNINSTANCES", "Effect": "Allow", "Action": ["ec2:RebootInstances","ec2:StartInstances", "ec2:StopInstances","ec2:TerminateInstances"], "Resource":"arn:aws:ec2:us-east-1:123456789012:instance/*", "Condition": {"StringEquals": {"ec2:ResourceTag/Owner": "${aws:username}"}} } ] } Version is required here because we’re using variables
  • 79. Locking down access to EC2 instances { "Version": "2012-10-17", "Statement": [ { "Sid": "THISALLOWSEC2READACCESS", "Effect": "Allow", "Action": ["ec2:Describe*","elasticloadbalancing:Describe*", "cloudwatch:ListMetrics","cloudwatch:GetMetricStatistics", "cloudwatch:Describe*","autoscaling:Describe*"], "Resource": "*" }, { "Sid": "THISLIMITSACCESSTOOWNINSTANCES", "Effect": "Allow", "Action": ["ec2:RebootInstances","ec2:StartInstances", "ec2:StopInstances","ec2:TerminateInstances"], "Resource":"arn:aws:ec2:us-east-1:123456789012:instance/*", "Condition": {"StringEquals": {"ec2:ResourceTag/Owner": "${aws:username}"}} } ] } Version is required here because we’re using variables Allows seeing everything from the EC2 console
  • 80. Locking down access to EC2 instances { "Version": "2012-10-17", "Statement": [ { "Sid": "THISALLOWSEC2READACCESS", "Effect": "Allow", "Action": ["ec2:Describe*","elasticloadbalancing:Describe*", "cloudwatch:ListMetrics","cloudwatch:GetMetricStatistics", "cloudwatch:Describe*","autoscaling:Describe*"], "Resource": "*" }, { "Sid": "THISLIMITSACCESSTOOWNINSTANCES", "Effect": "Allow", "Action": ["ec2:RebootInstances","ec2:StartInstances", "ec2:StopInstances","ec2:TerminateInstances"], "Resource":"arn:aws:ec2:us-east-1:123456789012:instance/*", "Condition": {"StringEquals": {"ec2:ResourceTag/Owner": "${aws:username}"}} } ] } Version is required here because we’re using variables Only allowed if this tag condition is true Allows seeing everything from the EC2 console
  • 81. Locking down access to EC2 instances { "Version": "2012-10-17", "Statement": [ { "Sid": "THISALLOWSEC2READACCESS", "Effect": "Allow", "Action": ["ec2:Describe*","elasticloadbalancing:Describe*", "cloudwatch:ListMetrics","cloudwatch:GetMetricStatistics", "cloudwatch:Describe*","autoscaling:Describe*"], "Resource": "*" }, { "Sid": "THISLIMITSACCESSTOOWNINSTANCES", "Effect": "Allow", "Action": ["ec2:RebootInstances","ec2:StartInstances", "ec2:StopInstances","ec2:TerminateInstances"], "Resource":"arn:aws:ec2:us-east-1:123456789012:instance/*", "Condition": {"StringEquals": {"ec2:ResourceTag/Owner": "${aws:username}"}} } ] } Version is required here because we’re using variables Only allowed if this tag condition is true Specify the tag key and value here Allows seeing everything from the EC2 console
  • 82. Limit EC2 instance types Demo
  • 83. Limit EC2 instance types Demo •
  • 84. Limit EC2 instance types Demo • • – – –
  • 85. Locking down access to instance types { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "NotAction": ["iam:*","ec2:RunInstances"], "Resource": "*"}, { "Effect": "Allow", "Action": "ec2:RunInstances", "NotResource": [ "arn:aws:ec2:us-east-1:012345678912:instance/*", "arn:aws:ec2:eu-west-1:012345678912:instance/*"]}, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:us-east-1:012345678912:instance/*", "arn:aws:ec2:eu-west-1:012345678912:instance/*"], "Condition": { "StringLike": {"ec2:InstanceType": ["t1.*","t2.*","m3.*"]} } } ] } Include all services/actions you want to exclude! Grants access to everything you need to launch an instance, except the actual instance Lock down types here
  • 86. Take advantage of IfExists conditional operator • Many condition keys only exist for certain resource types. • If you test for a nonexistent key, your policy will fail to evaluate (i.e., access denied). • You can add IfExists at the end of any condition operator except the Null condition (e.g., StringLikeIfExists). • Allows you to create policies that “don’t care” if the key is not present.
  • 87. StringNotLikeIfExists Example { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:*", "Resource": "*" }, { "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:012345678901:instance/*", "Condition": { "StringNotLikeIfExists": { "ec2:InstanceType": ["t1.*", "t2.*", "m3.*"] } } } ] }
  • 88. StringNotLikeIfExists Example { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:*", "Resource": "*" }, { "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:012345678901:instance/*", "Condition": { "StringNotLikeIfExists": { "ec2:InstanceType": ["t1.*", "t2.*", "m3.*"] } } } ] } For all instances in all regions
  • 89. StringNotLikeIfExists Example { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:*", "Resource": "*" }, { "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:012345678901:instance/*", "Condition": { "StringNotLikeIfExists": { "ec2:InstanceType": ["t1.*", "t2.*", "m3.*"] } } } ] } Only apply this condition if this InstanceType key exists For all instances in all regions
  • 92. Policy editor Policy validation checks: • JSON errors • Policy grammar errors Policy formatting: • On-demand • Autoformatting
  • 94. Decoding the EC2 authorization message • Additional information about the authorization status of a request
  • 95. Decoding the EC2 authorization message • The decoded message includes: – Whether the request was denied due to an explicit deny or absence of an explicit allow. – The principal who made the request. – The requested action. – The requested resource. – The values of condition keys in the context of the user's request. • Additional information about the authorization status of a request Output
  • 96. Decoding the EC2 authorization message • The decoded message includes: – Whether the request was denied due to an explicit deny or absence of an explicit allow. – The principal who made the request. – The requested action. – The requested resource. – The values of condition keys in the context of the user's request. The message is encoded because the details of the authorization status can constitute privileged information! • Additional information about the authorization status of a request Output
  • 97. Decoding the EC2 authorization message Demo
  • 98. Decoding the EC2 authorization message Demo • • – – – –
  • 102. Policy enforcement Decision starts at Deny 1 • AWS retrieves all policies associated with the user and resource. • Only policies that match the action and conditions are evaluated.
  • 103. Policy enforcement Decision starts at Deny 1 Evaluate all applicable policies 2 • AWS retrieves all policies associated with the user and resource. • Only policies that match the action and conditions are evaluated.
  • 104. Policy enforcement Decision starts at Deny 1 Evaluate all applicable policies 2 Is there an explicit deny? 3 • AWS retrieves all policies associated with the user and resource. • Only policies that match the action and conditions are evaluated.
  • 105. Policy enforcement Final decision =“deny” (explicit deny) Yes Decision starts at Deny 1 Evaluate all applicable policies 2 Is there an explicit deny? 3 • AWS retrieves all policies associated with the user and resource. • Only policies that match the action and conditions are evaluated. • If a policy statement has a deny, it trumps all other policy statements.
  • 106. Policy enforcement Final decision =“deny” (explicit deny) Yes No Is there an Allow? 4 Decision starts at Deny 1 Evaluate all applicable policies 2 Is there an explicit deny? 3 • AWS retrieves all policies associated with the user and resource. • Only policies that match the action and conditions are evaluated. • If a policy statement has a deny, it trumps all other policy statements.
  • 107. Policy enforcement Final decision =“deny” (explicit deny) Yes Final decision =“allow” Yes No Is there an Allow? 4 Decision starts at Deny 1 Evaluate all applicable policies 2 Is there an explicit deny? 3 • AWS retrieves all policies associated with the user and resource. • Only policies that match the action and conditions are evaluated. • If a policy statement has a deny, it trumps all other policy statements. • Access is granted if there is an explicit allow and no deny.
  • 108. Policy enforcement Final decision =“deny” (explicit deny) Yes Final decision =“allow” Yes No Is there an Allow? 4 Decision starts at Deny 1 Evaluate all applicable policies 2 Is there an explicit deny? 3 No Final decision =“deny” (default deny) 5 • AWS retrieves all policies associated with the user and resource. • Only policies that match the action and conditions are evaluated. • If a policy statement has a deny, it trumps all other policy statements. • Access is granted if there is an explicit allow and no deny. • By default, an implicit (default) deny is returned.
  • 109. Summary • IAM provides access control for your AWS account. • The policy language authorizes that access. • All applicable policies are evaluated. • Users are denied access by default. • A deny always trumps an allow. • Use policy variables and remember the version! • Keep in mind which EC2 actions or resources are currently supported.
  • 110. Additional resources • Documentation • http://aws.amazon.com/documentation/iam/ • http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api- permissions.html • AWS Security Blog (blogs.aws.amazon.com/security) • http://blogs.aws.amazon.com/security/post/Tx2KPWZJJ4S26H6/Demystifying- EC2-Resource-Level-Permissions • http://blogs.aws.amazon.com/security/post/Tx29ZC3VE9SQGQM/Granting- Users-Permission-to-Work-in-the-Amazon-EC2-Console • http://aws.amazon.com/iam • https://forums.aws.amazon.com/forum.jspa?forumID=76 • Twitter: @AWSIdentity
  • 111. Related sessions Wednesday, 1:30–2:30 P.M. SEC302 – IAM Best Practices to Live By Thursday, 1:30–2:30 P.M. SEC307 – A Progressive Journey Through AWS IAM Federation Options: From Roles to SAML to Custom Identity Brokers
  • 112. Remember to complete your evaluations!