是否可以限制AWS S3对象,使只有通过AWS认知进行身份验证的用户才能访问该对象?我还没有想出一种方法来做到这一点,但在我看来,这显然是一种用例。
我想通过AWS S3托管一个网站,并限制一些对象(我的页面),这样如果用户直接访问它们,就会得到一个被拒绝的权限错误。如果用户是通过AWS认知技术进行身份验证的,那么对象应该是可用的。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Deny access to objects in the secured directory.",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::domain.com/secured/*"
},
{
"Sid": "Only allowed authenticated users access to a specific bucket.",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::x:role/Cognito_Domain_IdP_Auth_Role"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::domain.com/secured/*"
},
{
"Sid": "Read access for web hosting.",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::domain.com/*"
}
]
}发布于 2018-12-16 20:47:13
您可以将一个角色传递给您的用户,通过身份验证,然后允许他们执行某些操作。
为角色映射创建角色
为每个角色添加适当的信任策略是很重要的,这样它只能由Amazon为身份池中经过身份验证的用户使用。下面是这样一种信任策略的一个例子:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"cognito-identity.amazonaws.com:aud": "us-east-1:12345678-dead-beef-cafe-123456790ab"
},
"ForAnyValue:StringLike": {
"cognito-identity.amazonaws.com:amr": "authenticated"
}
}
}
]
}授予Pass角色权限
要允许IAM用户设置权限超过该用户对标识池的现有权限的角色,您可以授予该用户iam:PassRole权限,以便将该角色传递给集合标识池角色API。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1",
"Effect": "Allow",
"Action": [
"iam:PassRole"
],
"Resource": [
"arn:aws:iam::123456789012:role/myS3WriteAccessRole"
]
}
]
}这里有更多信息:https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html
发布于 2019-07-28 04:02:07
是的,您可以做到这一点,但是不能通过控制台直接配置它。
首先,您需要创建策略,限制对S3和→桶的访问 →创建一个附加它们的角色 将它们分配给EC2或Lambda 使用→对应用程序中的用户进行身份验证 使用该方法可以为S3对象拥有一个有签名的→并检索它们
这可能对你有帮助
https://stackoverflow.com/questions/52933373
复制相似问题