CanvasGroup controls a whole UI group.

group.alpha = 0f;
group.interactable = false;
group.blocksRaycasts = false;

Simple fade:

IEnumerator FadeIn()
{
    group.alpha = 0f;

    while (group.alpha < 1f)
    {
        group.alpha +=
            Time.unscaledDeltaTime *
            3f;

        yield return null;
    }

    group.alpha = 1f;
}

Use unscaled time for UI that must animate while gameplay is paused.