AWS 临时凭证——过期时间是 UTC 时间吗?
AWS temporary credentials — is the Expiration time in UTC?
我想这很有可能,但我还没有找到任何明确的信息表明这是真的。
从 AssumeRole 接收到 Credentials 对象时,Expiration 是 UTC 时间吗?
来自 sts:AssumeRole
的响应包括一个名为 Expiration
的 属性:
{
"AssumedRoleUser": {
"AssumedRoleId": "AROA3XFRBF535PLBIFPI4:s3-access-example",
"Arn": "arn:aws:sts::123456789012:assumed-role/xaccounts3access/s3-access-example"
},
"Credentials": {
"SecretAccessKey": "9drTJvcXLB89EXAMPLELB8923FB892xMFI",
"SessionToken": "AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU=",
"Expiration": "2016-03-15T00:05:07Z",
"AccessKeyId": "ASIAJEXAMPLEXEG2JICEA"
}
}
Expiration
值是一个 ISO 8601 formatted date。这意味着,日期可以在任何时区,但时区是在日期本身中指定的。由于日期值末尾的 "Z",上面的示例是 UTC。
为了 100% 正确,您可能应该预计该值可能是非 UTC 值,您可能需要对值进行时区转换。但是,在实践中,该值很可能是 UTC。
当您使用 boto3 调用 sts 时,过期日期显示为 utc
sts = boto3.client('sts')
role = sts.assume_role(
RoleArn='<role>',
RoleSessionName='STSTest',
DurationSeconds=900
)
role["Credentials"]["Expiration"]
>>datetime.datetime(2018, 5, 15, 4, 51, 50, tzinfo=tzutc())
是的,它将采用 UTC 时间
所以不管你的时区.. 检查你的时区的当前时间。将 UTC 时间加上 8 小时或您公司提供的任何到期时间。查看是否与 Respone
中给出的一个到期时间匹配
我想这很有可能,但我还没有找到任何明确的信息表明这是真的。
从 AssumeRole 接收到 Credentials 对象时,Expiration 是 UTC 时间吗?
来自 sts:AssumeRole
的响应包括一个名为 Expiration
的 属性:
{
"AssumedRoleUser": {
"AssumedRoleId": "AROA3XFRBF535PLBIFPI4:s3-access-example",
"Arn": "arn:aws:sts::123456789012:assumed-role/xaccounts3access/s3-access-example"
},
"Credentials": {
"SecretAccessKey": "9drTJvcXLB89EXAMPLELB8923FB892xMFI",
"SessionToken": "AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU=",
"Expiration": "2016-03-15T00:05:07Z",
"AccessKeyId": "ASIAJEXAMPLEXEG2JICEA"
}
}
Expiration
值是一个 ISO 8601 formatted date。这意味着,日期可以在任何时区,但时区是在日期本身中指定的。由于日期值末尾的 "Z",上面的示例是 UTC。
为了 100% 正确,您可能应该预计该值可能是非 UTC 值,您可能需要对值进行时区转换。但是,在实践中,该值很可能是 UTC。
当您使用 boto3 调用 sts 时,过期日期显示为 utc
sts = boto3.client('sts')
role = sts.assume_role(
RoleArn='<role>',
RoleSessionName='STSTest',
DurationSeconds=900
)
role["Credentials"]["Expiration"]
>>datetime.datetime(2018, 5, 15, 4, 51, 50, tzinfo=tzutc())
是的,它将采用 UTC 时间 所以不管你的时区.. 检查你的时区的当前时间。将 UTC 时间加上 8 小时或您公司提供的任何到期时间。查看是否与 Respone
中给出的一个到期时间匹配