如何获取boto3通过STS AssumeRoleWithSAML连接AWS的SSL密码套件?
记录boto3 STS连接的SSL密码套件信息
boto3的默认DEBUG日志不会输出SSL握手的细节,要获取SSL密码套件信息,得调整它底层依赖库的日志配置——boto3基于botocore,而botocore又用urllib3处理HTTP/SSL连接,所以需要开启这些库的DEBUG日志:
配置全局日志和底层库的日志级别
使用以下代码替换你原来的日志配置,确保覆盖所有相关组件:import logging import boto3 # 配置日志格式,方便区分不同组件的日志 logging.basicConfig( level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) # 开启urllib3的DEBUG日志(核心HTTP/SSL连接组件) logging.getLogger('urllib3').setLevel(logging.DEBUG) # 开启botocore的详细日志(boto3的底层核心库) logging.getLogger('botocore').setLevel(logging.DEBUG) # 若使用requests作为HTTP后端,也开启其日志(部分环境下需要) logging.getLogger('requests').setLevel(logging.DEBUG) # 创建STS客户端并执行AssumeRoleWithSAML操作 sts_client = boto3.client('sts') # 替换为你的实际认证参数 response = sts_client.assume_role_with_saml( RoleArn='arn:aws:iam::123456789012:role/YourSamlRole', PrincipalArn='arn:aws:iam::123456789012:saml-provider/YourSamlProvider', SAMLAssertion='your-base64-encoded-saml-assertion' )从日志中提取SSL密码套件信息
运行代码后,你会在日志中看到类似这样的行:DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): sts.amazonaws.com:443
DEBUG:urllib3.connectionpool:https://sts.amazonaws.com:443 "POST / HTTP/1.1" 200 1234
DEBUG:urllib3.connectionpool:SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384最后一行里的
TLS_AES_256_GCM_SHA384就是本次连接使用的SSL密码套件。
如果日志量太大,你可以只针对性开启urllib3.connectionpool的日志,过滤掉其他冗余信息:
logging.getLogger('urllib3.connectionpool').setLevel(logging.DEBUG)
内容的提问来源于stack exchange,提问作者Faiz Kidwai
相关产品推荐
相关产品推荐

