In this chapter, we explain permissions and discuss their role in the implementation of CAS. We describe the mechanisms that the runtime uses to enforce code-level security, and explain how you can use permissions to manipulate these mechanisms. We examine the functionality common to all permissions, and demonstrate the use of key permission classes provided in the .NET class library. Finally, we show you how to extend CAS by implementing your own custom permissions.