在本次洛杉矶举办的亚马逊云AWSRe:Inforce全球安全大会中,小李哥作为亚马逊大中华区开发者社区和自媒体代表,跟着亚马逊云安全产品团队采访了亚马逊云首席信息安全官(CISO)CJ Moses、亚马逊副总裁Eric Brandwine和亚马逊云首席高级安全工程师Becky Weiss。
谁是CJ Moses?
CJ Moses 是亚马逊云科技AWS)的首席信息安全官(CISO)。他主要负责监督AWS基础设施和服务的安全性,确保它们符合高标准的安全性、合规性和数据保护要求。CJ Moses 在亚马逊工作多年,担任过公司内的多个领导职位,为亚马逊云科技平台的安全实践和政策做出了重要贡献。
CJ和Becky也是本次大会的Keynote主讲嘉宾。采访过后,小李哥也和CISO简短聊了一下,刷了一波脸!机会真的很难得,这次特别开心!
CJ 和大家说了什么?
本次采访CJ感谢了所有从国内来到大会现场的参会者,也期待着未来能与更多中国用户开展更深入的合作。去年8月在北京也会举办国内的第一届亚马逊Re:Inforce安全大会,欢迎大家参加。更多问题请关注小李哥了解更多。
本地re:Inforce大会CJ介绍了什么?
本次CJ在主题演讲中介绍了亚马逊云科技AWS推出的代码审查工具Code Guru.
Amazon CodeGuru是一项提供自动化代码审查和应用性能优化建议的服务。CodeGuru由程序分析和机器学习技术驱动,并且基于亚马逊云科技内部的数百万次代码审查和数千个开源项目及Amazon内部项目的应用性能分析中积累的最佳实践和经验教训进行训练。
Amazon CodeGuru包括两项服务:
-
Amazon CodeGuru Reviewer
帮助您在应用开发过程中检测难以发现的缺陷,并提供修复建议,从而提升源代码质量。
2. Amazon CodeGuru Profiler
帮助您找到最耗费资源的代码行,降低基础设施成本,并优化应用性能。
使用举例:
漏洞代码:
def sync_ddb_table(source_ddb, destination_ddb):
response = source_ddb.scan(TableName=“table1”)
for item in response['Items']:
...
destination_ddb.put_item(TableName=“table2”, Item=item)
…
查询结果:
同时Code Guru会生成自动建议的修复代码:
def sync_ddb_table(source_ddb, destination_ddb):
response = source_ddb.scan(TableName==“table1”)
for item in response['Items']:
...
destination_ddb.put_item(TableName=“table2”, Item=item)
# Keeps scanning util LastEvaluatedKey is null
while "LastEvaluatedKey" in response:
response = source_ddb.scan(
TableName="table1",
ExclusiveStartKey=response["LastEvaluatedKey"]
)
for item in response['Items']:
destination_ddb.put_item(TableName=“table2”, Item=item)
有多种代码修复方案供选择, 大家可以任选一种:
def sync_ddb_table(source_ddb, destination_ddb):
table = source_ddb.Table(“table1”)
scan_kwargs = {
…
}
done = False
start_key = None
while not done:
if start_key:
scan_kwargs['ExclusiveStartKey'] = start_key
response = table.scan(**scan_kwargs)
for item in response['Items']:
destination_ddb.put_item(TableName=“table2”, Item=item)
start_key = response.get('LastEvaluatedKey', None)
done = start_key is None
漏洞代码2:
def list_sns(region, creds, sns_topics=[]):
sns = boto_session('sns', creds, region)
response = sns.list_topics()
for topic_arn in response["Topics"]:
sns_topics.append(topic_arn["TopicArn"])
return sns_topics
def process():
...
for region, creds in jobs["auth_config"]:
arns = list_sns(region, creds)
...
Python
扫描代码:
修复代码:
def list_sns(region, creds, sns_topics=None):
sns = boto_session('sns', creds, region)
response = sns.list_topics()
if sns_topics is None:
sns_topics = []
for topic_arn in response["Topics"]:
sns_topics.append(topic_arn["TopicArn"])
return sns_topics