Improving Multi-Tenancy Security by Controlling Resource Allocation in IaaS Public Clouds